二、實現方式
三、總結
下文如有錯漏之處,敬請指正
介面卡模式是將乙個類介面轉換為客戶端期望的另乙個介面,使得原本因介面不相容的類能協同工作。即讓不相關的兩個類產生關聯並進行工作。
介面卡模式的主要角色:
缺點
物件介面卡模式
adapter類聚合adaptee物件並實現target介面
優點
缺點
預設介面卡模式
抽象類adapter實現adaptee介面,通過匿名內部類的方式覆寫adapter中需要的方法,即target。
實現邏輯:
adapter繼承adaptee類並實現target介面,完成adaptee—>target的適配。
需求:電器a電壓是110v,電器b電壓是5v,而國內的標準電壓是220v,因此需要買乙個變壓器,將220v轉為110v,將220v轉為5v,電器才能正常工作。
其中 target是110v和5v ,adaptee是220v, adapter是變壓器,使用介面卡將adaptee—>target進行適配。
target:
package adapter.classadapter;
public
inte***ce
target
adaptee:
package adapter.classadapter;
public
class
adaptee
}
adapter:
adapter110v
package adapter.classadapter;
public
class
adapter110v
extends
adaptee
implements
target
}
adapter5v
package adapter.classadapter;
public
class
adapter5v
extends
adaptee
implements
target
}
package adapter.classadapter;
public
class
}
package adapter.classadapter;
public
class
}
client:
package adapter.classadapter;
public
class
client
}
當客戶端有乙個120v的電器,那麼此時只需要再增加乙個120v的介面卡,電器就可以正常工作了。
如果使用者現在到澳大利亞了,他們國家的標準電壓是240v,因為類介面卡是靜態繫結源角色,如果要將240v轉為使用者想要的電壓,就要把所有介面卡重新寫一遍。對此情況可以採用物件介面卡模式。
實現邏輯:
adapter聚合adaptee物件並實現target介面,完成adaptee—>target的適配。
需求:使用者的手機電壓是5v,在國內的標準電壓是220v,因此變壓器將220v轉為5v。當他到日本出差時,由於日本的標準電壓是110v,因此他需要將110v轉為5v的變壓器。
其中 target是5v ,adaptee是220v和110v, adapter是變壓器,使用介面卡將adaptee—>target進行適配。
target:
package adapter.objectadapter;
public
inte***ce
target
adaptee:
adaptee
package adapter.objectadapter;
public
abstract
class
adaptee
adaptee110v
package adapter.objectadapter;
public
class
adaptee110v
extends
adaptee
}
adaptee220v
package adapter.objectadapter;
public
class
adaptee220v
extends
adaptee
}
adapter:
adapter5v
package adapter.objectadapter;
public
class
adapter5v
implements
target
public
adapter5v
(adaptee adaptee)
@override
public
void
transferv()
}
package adapter.objectadapter;
public
class
}
client:
package adapter.objectadapter;
public
class
client
}
當電壓不同時,只要增加或更換相應的源角色類和介面卡即可。
實現邏輯:
源有介面有很多方法,而我們只需要其中一部分,可以用抽象類來實現該介面,並為該介面的方法提供乙個預設實現(空方法),抽象類的子類去實現自己需要的介面,符合介面隔離原則。
adaptee是源介面,抽象類是adapter,抽象子類是target。
需求:乙個工具介面定義了許多任務具方法,某類只想使用該工具的某兩個方法。
adaptee:
package adapter.defaultadapter;
public
inte***ce
adaptee
adapter:
package adapter.defaultadapter;
public
abstract
class
adapter
implements
adaptee
@override
public
void
func2()
@override
public
void
func3()
@override
public
void
func4()
}
client:
package adapter.defaultadapter;
public
class
client};
adapter.
func1();}}
介面卡模式是乙個補償模式,通常用來解決介面不相容的問題。它通過把非本系統介面的物件包裝成本系統可以接受的物件,從而簡化了系統大規模變更風險的存在。 23種設計模式 介面卡模式
1 概念 定義 介面卡模式,是指將乙個類的介面轉換成客戶期望的另外乙個介面,是原本的介面不相容的類,可以一起工作。它是結構型模式的一種。建立型模式 結構型模式 行為模式 單例模式 模式 模板方法模式 原型模式 介面卡模式 策略模式 工廠方法模式 橋接模式 命令模式 抽象工廠模式 裝飾模式 責任鏈模式...
23種設計模式之介面卡模式(Adapter)
介面卡模式將乙個介面轉換成客戶希望的另乙個介面,從而使介面不相容的那些類可以一起工作。介面卡模式既可以作為類結構型模式,也可以作為物件結構型模式。在類介面卡模式中,通過使用乙個具體類將適配者適配到目標介面中 在物件介面卡模式中,乙個介面卡可以將多個不同的適配者適配到同乙個目標。圓形類 public ...
了解23種設計模式之介面卡模式
一,什麼是 介面卡模式 adapter 模式 也叫介面卡模式,是構造型模式之一,通過adapter 模式可以改變已有類 或外部類 的介面形式 二,介面卡模式的定義與特點以及結構 定義 將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類能一起工作。介面卡模式分為 ...