設計模式學習 介面卡模式(類介面卡和物件介面卡)

2021-07-28 09:35:26 字數 1695 閱讀 7823

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

介面卡的用法

在想使用乙個已經存在的類,但它的介面,也就是它的方法和要求不相同時,就應該考慮使用介面卡模式。兩個類所做的事情相同或相似,但是具有不同的介面時需要使用它。雙方都不太容易修改的時候可以使用介面卡模式。

1、類介面卡

從圖中可以看出adaptee沒有request函式,但如果客戶端需要使用這個函式的話,可以建立乙個adapter類,同時繼承兩個類,在adapter類中,建立request函式來呼叫speclificrequest函式。

#include using namespace std;

class player //運動員抽象類

; //姓名賦值

string getname() //獲取姓名

virtual void attack() = 0; //進攻純虛函式

virtual void defense() = 0; //防守純虛函式

};class forward : public player //前鋒類

; //姓名賦值

void attack() //進攻函式

void attack() //進攻函式

void defense() //防守函式 };

int main()

2、物件介面卡

從圖中可以看出類介面卡和物件介面卡的功能其實差不多,只是在適配的過程中,類介面卡是使用多重繼承來呼叫兩個函式,而物件介面卡是通過物件來呼叫。

#include using namespace std;

class player //運動員抽象類

; //姓名賦值

string getname() //獲取姓名

virtual void attack() = 0; //進攻純虛函式

virtual void defense() = 0; //防守純虛函式

};class forward : public player //前鋒類

; //姓名賦值

void attack() //進攻函式

void attack() //翻譯進攻訊號

void defense() //翻譯防守訊號 };

int main()

顯示結果:

[hjf@hjf 設計模式]$ ./a.out 

前鋒 巴蒂爾 進攻

後衛 麥克格雷迪 進攻

中鋒 姚明 進攻

中鋒 姚明 防守

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

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

設計模式 介面卡模式(類介面卡和物件介面卡)

如果去歐洲國家去旅遊的話,他們的插座如下圖最左邊,是歐洲標準。而我們使用的插頭如下圖最右邊的。因此我們的膝上型電腦,手機在當地不能直接充電。所以就需要乙個插座轉換器,轉換器第1面插入當地的插座,第2麵供我們充電,這樣使得我們的插頭在當地能使用。生活中這樣的例子很多,手機充電器 將220v轉換為5v的...

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

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