介面卡有兩種實現方式,分別是類介面卡和物件介面卡。這兩種實現方式不太一樣。
類介面卡
client:與符合 target 介面的物件協同
adaptee:定義乙個已經存在的介面,這個介面需要適配
adapter:對 adaptee 的介面與 target 介面進行適配
以下幾種情況可以使用 adapter 模式
以上說了兩種介面卡的原理,那麼,在專案中該如何選擇哪種型別的介面卡呢?接下來詳細看看這兩種介面卡的特點。
類介面卡
物件介面卡
ok,說了這麼多,都是理論的東西,接下來結合示例來理解。
示例大家都知道,小鳥只能在天上飛,但是不能在水裡游,那如果我們想要它能在水裡游怎麼辦呢(我也是異想天開,哈哈哈),那就得給它賦予一點魔法,能夠擁有游泳的技能(感覺創造了乙個新物種)。ok,來看一下**:
物件介面卡
#include using namespace std;
//target
//建立目標介面
class bird
;//adaptee
//建立適配者,就是希望擁有的技能
class swimmingskills
};//建立介面卡
class swimadapter : public bird
~swimadapter()
}virtual void swimming()
private:
swimmingskills * m_pswimmingskills = nullptr;
};int main()
可以看到,經過適配,現在小鳥也可以在水裡游泳啦,哈哈哈哈。
類介面卡
類介面卡的方式就直接多繼承來實現啦,修改以上示例:
class swimadapter1 : public bird ,swimmingskills
};
其他的**保持不變。這種方式看起來好像**更簡單,但是真正在專案中時,要盡量避免使用多繼承的方式,可能會導致混淆(關於這部分,後期再單獨介紹)。大家可以根據上述的兩種介面卡的優缺點來進行選擇。 C 設計模式 介面卡模式
生活中的介面卡 買膝上型電腦,買手機時,都有乙個電源介面卡,電源介面卡又叫外接電源,是小型可攜式電子裝置及電子電器的供電電壓變換裝置,常見於手機,膝上型電腦上。它的作用是將家裡的220v高電壓轉換成這些電子產品能工作的5v 20v左右穩定的低電壓,使它們能正常工作。就是說,如果沒有這個電源介面卡,我...
C 設計模式 介面卡模式
生活中的介面卡 買膝上型電腦,買手機時,都有乙個電源介面卡,電源介面卡又叫外接電源,是小型可攜式電子裝置及電子電器的供電電壓變換裝置,常見於手機,膝上型電腦上。它的作用是將家裡的220v高電壓轉換成這些電子產品能工作的5v 20v左右穩定的低電壓,使它們能正常工作。就是說,如果沒有這個電源介面卡,我...
C 設計模式 介面卡模式
目錄 基本概念 與例項 介面卡 adapter 模式 將乙個類的介面轉換為客戶希望的另乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。當系統的資料和行為都正常,但介面不負荷時,可以考慮使用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配。介面卡模式主要應...