介面卡模式

2021-09-26 21:29:38 字數 1392 閱讀 1699

介面卡模式將某個類的介面轉換成客戶端期望的另乙個介面表示,主的目的是相容性,讓原本因介面不匹配不能一起工作的兩個類可以協同工作

目標(target):客戶端希望得到的介面

介面卡(adaper):介面卡負責將源介面轉換為目標介面

被適配者(adapee):需要被適配的介面

類介面卡模式

adapter類,通過繼承 adapee 類,實現 target 類介面,完成 adapee->target 的適配

給手機充電的例子:

充電器220->5v就相當於介面卡,220v電壓就相當於adapee被適配者,5v電壓就相當於target目標介面

voltage220,需要被適配的物件(220v電壓)

class

voltage220

};

類介面卡(220v->5v),5v就是目標介面

class

adaper

:public voltage220

};

客戶端

class

mobile};

intmain()

執行結果為

我是 220v 電壓

介面卡開始適配電壓~

~適配完成,我是用來給手機充電的 5v 電壓

電壓為5v,開始充電~

物件介面卡模式

基本思路和類的介面卡模式相同,只是將adapter類作修改,這次不繼承adapee類,而是持有adapee類的例項(組合)

即:持有 adapee 類,實現 target 類介面,完成 adapee->target 的適配。

實現

物件介面卡

class

adaper

intoutput5v()

private

: voltage220* _v220;

};

客戶端

class

mobile};

intmain()

執行結果為

我是 220v 電壓

介面卡開始適配電壓~

~適配完成,我是用來給手機充電的 5v 電壓

電壓為5v,開始充電~

介面卡模式作用就是將介面進行轉換,將本來不相容的介面轉換為相容的介面,讓原本因為類介面問題不能在一起工作的兩個類可以在一起工作

介面卡分為類介面卡和物件介面卡兩種,實現方式不同,類介面卡的是繼承,耦合度比較高,物件介面卡使用的組合,耦合度低

符合開閉原則:對於擴充套件是開放的,對於修改是封閉的

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

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

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