介面卡模式

2021-07-11 07:27:15 字數 1308 閱讀 6935

介面卡模式:

將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。

下面先看乙個簡單的適配例子:

#include #include #include #include using namespace std;

/*定義鴨子介面*/

class duck;

/*綠頭鴨*/

class mallardduck :public duck

void fly()

};/*定義火雞介面*/

class turkey;

/*定義野火雞*/

class wildturkey :public turkey

void fly()

};/*現在如果缺鴨子物件,而想讓火雞來填充,因為介面不同,因此需要提供介面卡*/

class turkeyadapter :public duck

void quack()

void fly()

};/*測試鴨子,傳入乙個鴨子物件*/

void testduck(duck *duck)

int main()

下面來看類圖:

優點:被適配的任何子類,都可以搭配介面卡使用。

介面卡包含兩種:「物件」介面卡和「類」介面卡。

前面的例子及類圖都是「物件」介面卡。

物件介面卡和類介面卡的差別:

類介面卡繼承類target和adaptee,而物件介面卡利用組合的方式將請求傳送個被適配者。(即乙個是組合,乙個是繼承)

兩者優點:

物件介面卡:優點是不僅可以適配某個類,也可以適配該類的任何子類,彈性好。

類介面卡:優點是不需要重新實現我的整個被適配者,必要的時候,也可以覆蓋被適配者的行為,效率高(僅僅需要乙個類介面卡,不需要介面卡和乙個被適配者)。

裝飾者模式和介面卡模式的區別:

1)關於新職責:介面卡也可以在轉換時增加新的職責,但主要目的不在此。裝飾者模式主要是給被裝飾者增加新的職責。

2)關於原介面:介面卡模式是用新介面來呼叫原介面,原介面對新系統是不可見或者不可用。裝飾者原封不動的使用原介面,系統對裝飾的物件也通過原介面來完成使用。

3)關於包裹物件:介面卡知道被適配者的詳細情況,裝飾者只知道其介面是什麼,至於其具體類,只有在執行期才知道。

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

做個筆記 引用 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...