設計模式 介面卡模式

2021-09-11 02:51:32 字數 1425 閱讀 6088

介面卡模式(adapter),將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

由圖可知介面卡模式包含三個角色:

1:target(目標抽象類):目標抽象類定義客戶所需的介面,可以是乙個抽象類或介面,也可以是具體類。在類介面卡中,由於c#語言不支援多重繼承,所以它只能是介面。

2:adapter(介面卡類):它可以呼叫另乙個介面,作為乙個轉換器,對adaptee和target進行適配。它是介面卡模式的核心。

3:adaptee(適配者類):適配者即被適配的角色,它定義了乙個已經存在的介面,這個介面需要適配,適配者類包好了客戶希望的業務方法。

static

void

main

(string[

] args)

class target

}class adaptee

}class adapter:target

}

應用一用介面卡模式模擬籃球比賽中教練分配給前鋒、中鋒、後衛的任務,其中包括外籍運動員(外籍運動員是聽不懂教練說的英語的)。

類圖

分析:外籍球員相當於介面卡模式中的適配者類,翻譯者相當於介面卡的角色。球員類是抽象類,類中有抽象方法,這樣,子類可以重寫父類中的方法。有了翻譯者類,外籍球員就可以很清晰的與球員進行交流。否則,則不能。所以說,這個例子中的翻譯者類,(也就是介面卡模式中的介面卡類)是此模式的核心部分。

應用二

我們平時用的耳機介面有2.5mm和3.5mm之分,比如我新買的耳機是2.5mm介面的,而手機的耳機孔只能插3.5mm介面的耳機。而這時我又不想重新買乙個耳機,也不想換手機,這時,介面卡就派上用場了。介面卡就能實現2.5mm介面的耳機插在3.5mm耳機孔的手機上了。

1:將目標類和適配者類解耦,通過引入乙個介面卡類來重用現有的適配者類,無需修改原有結構。

2:增加了類的透明性和復用性,將具體的業務實現過程封裝在適配者類中,對於客戶端類而言是透明的,而且提高了適配者的復用性,同一適配者類可以在多個不同的系統中復用。

3:靈活性和擴充套件性都非常好,通過使用配置檔案,可以很方便的更換介面卡,也可以在不修改原有**的基礎上 增加新的介面卡,完全復合開閉原則。

1:一次最多只能適配乙個適配者類,不能同時適配多個適配者。

2:適配者類不能為最終類,在c#中不能為sealed類

3:目標抽象類只能為介面,不能為類,其使用有一定的侷限性。

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式 介面卡模式

01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...