介面卡模式(adapter pattern)是作為兩個不相容的介面之間的橋梁。這種型別的設計模式屬於結構型模式。
舉個簡單的例子,讀卡器作為電腦和記憶體卡的介面卡,把記憶體卡放到讀卡器中,再將讀卡器插入電腦,電腦就可以讀取記憶體卡的資料。
1、系統需要使用現有的類,而此類的介面不符合系統的需要
1. 目標(target):目標是乙個介面,該介面是客戶想使用的介面。
2. 被適配者(adaptee):被適配者是乙個已經存在的介面或者抽象類,這個介面或者抽象類需要適配。
3. 介面卡(adapter):介面卡是乙個類,實現了目標介面,並且包含被適配者的引用,即介面卡的職責是對被適配者介面與目標介面進行適配。(介面卡類中有了被適配者的引用,就可以呼叫被適配者的方法與重寫來的方法進行適配)
現在使用者已有乙個兩相的插座,但最近又有了乙個三相插座。現有一台洗衣機和一台電視機,洗衣機按著三相插座的標準配有三相插頭,而電視機按著兩相插座的標準配有兩相插頭,現在使用者想用新的三相插座來使用洗衣機和電視機,即用新的三相插座為洗衣機和電視機接通電流。
那麼,三相插座類(threeelectricoutlet)就是目標(target):
public inte***ce threeelectricoutlet
接著,被適配者(adaptee)是兩相插座:
public inte***ce twoelectricoutlet
介面卡類,實現了三相插座,並且包含了兩相插座的引用變數,可以在重寫三相插座的方法中進行呼叫兩相插座的方法:
public class threeelectricadapter implements threeelectricoutlet
@override
public void connectelectriccurrent()
}
電視機(tv)類:
public class tv implements twoelectricoutlet
@override
public void connectelectriccurrent()
public void turnon()
}
測試:
1. 目標和被適配者是完全解耦關係。
2. 介面卡模式滿足「開-閉原則」。當新增乙個實現adaptee介面的新類時,不必修改adapter,adapter就能對這個新類的例項進行適配。
1. 目標類中的目標方法得是抽象的才能保證adapter類重寫了方法。
設計模式整理 10 介面卡模式
學習 android 原始碼設計模式解析與實踐 系列筆記 經常會碰到兩個沒有關係的型別之間需要進行互動,但是雙方又都不想做出修改,這種尷尬的情況下,可以增加乙個 adapter 的角色,進行兩個不同型別的介面的相容。例如 讀卡器是作為記憶體卡和筆記本之間的介面卡。將記憶體卡插入讀卡器,再將讀卡器插入...
設計模式學習 介面卡模式
建立型模式學習完了,接下來學習的是結構性模式。結構型模式主要涉及到如何組合類和物件以獲得更大的結構,通常採用繼承機制來組合介面和實現。首先學習的是介面卡模式。首先是介面卡的定義 介面卡模式,將乙個類的介面轉換成客戶所希望的另外乙個介面。介面卡模式使得原來由於介面不相容而不能一起工作的類可以一起工作。...
設計模式學習 介面卡模式
介面卡在我們的生活中應用的十分廣泛,比如我們的筆記本電源,如果不用介面卡,那我們的筆記本將直接接入220v的交流電,出國的朋友肯定對三個插孔的轉換頭比較熟悉,這也是一種介面卡。顧名思義,介面卡模式 有時候也稱包裝樣式或者包裝 將乙個類的介面適配成使用者所期待的。乙個適配允許通常因為介面不相容而不能在...