結構型模式之介面卡ADAPTER

2021-07-27 14:41:11 字數 1034 閱讀 5458

推薦先看《敏捷開發:原則、模式與例項》了解基本開發原則

如果我們需要使用另乙個類,但是這個類的介面與我們現有**不介面不相容,可以使用adapter模式使得不相容介面一起工作。

如上圖shape類是我們現有**,現在需要復用textview。但是觀察兩個類內的函式,可以發現shape內boundingbox()與textview內的getextent()作用相同。但是由於函式名不同,無法實現多型性。adapter模式就是繼承shape基類,生成乙個textshape子類,用這個子類實現對textview的引用,完成介面的相容。而且如果你想使用一些已存在的子類時可以直接適配他們的父類介面,減少子類例項化。

類介面卡:同時繼承需要適配的類,在子類中重現現有類函式,呼叫適配類的函式。注意c++中現有類採用公有繼承,適配類採用私有繼承。

由於使用繼承,無法匹配抽象父類;但是由於繼承可以過載adaptee中方法,重定義某些行為;無需使用指標得到adaptee物件。

物件介面卡:直接引用物件。

可以適配多個adaptee物件;重定義行為較困難。

雙向介面卡:使用類介面卡完成雙方互相呼叫。

可插入介面卡:

抽象方法:

**物件方法:

結構型模式 介面卡

結構圖 模式說明 擴充套件點在adaptee類,adaptee可以被其他類替換。客戶端需要知道哪個具體的adapter負責將adaptee轉換成需要的target介面。客戶端不關心具體哪個adaptee被適配和轉換的。將乙個類的介面轉換成客戶希望的另乙個介面,介面卡模式使得原本由於介面不相容而不能一...

結構型模式之介面卡模式

介面卡模式 物件介面卡模式結構 target 目標抽象類 目標抽象類定義客戶所需介面,可以是乙個抽象類或介面,也可以是具體類。adapter 介面卡類 介面卡可以呼叫另乙個介面,作為乙個轉換器,對adaptee和target進行適配。在物件介面卡模式中,介面卡類通過繼承target並關聯乙個adap...

結構型模式之介面卡模式

如果在系統中存在不相容的介面,可以通過引入乙個介面卡來使得原本因為介面不相容而不能一起工作的兩個類可以協同工作。介面卡模式包括類介面卡和物件介面卡。類介面卡 實現 1 目標抽象類 public inte ce robot 2 適配者類 public class dogpublic void run ...