介面卡模式的作用就是將乙個類的介面轉換成其他類想要的介面,使得原本介面不相容的類可以一起工作。
(舉個生活中的例子,你有乙個兩相的插孔,但是你的用電器用的是三相插頭,所以你要用介面卡將三相插頭轉成兩相插頭,再插入兩相的插孔中使用)
1、類介面卡
類的適配要用到多重繼承來提供適配後的介面(你沒看錯,就是多重繼承)。。。。
類介面卡的優點:因為介面卡類是適配者類的子類,所以可以在介面卡類中置換一些適配者的方法,使得介面卡更為靈活。
類介面卡的缺點:不是所有語言都像c++一樣支援多繼承的,對於不支援多重繼承的語言,一次最多只能適配乙個適配者類,而且目標抽象類只能為介面,不能為類,其使用有一定的侷限性,不能將乙個適配者類和他的子類同時適配到目標介面。
#include
//#include
using
namespace std;
//三腳插頭
class
threephaseplug
void
pluginthree()
};//兩腳插頭
class
twophaseplug
virtual
void
plugintwo()
=0;}
;//void twophaseplug::plugintwo(){}
//兩腳插介面卡
class
twophaseplugadapter
:public twophaseplug,
public threephaseplug
void
plugintwo()
void
conversion()
};intmain()
2、物件介面卡
將需要適配的物件進行包裝然後提供適配後的介面。
物件介面卡的優點:把多個不同的適配者適配到同乙個目標。(同乙個介面卡可以把適配者類和他的子類都適配到目標介面)
物件介面卡的缺點:相比於類介面卡模式,物件介面卡要想置換適配者類的方法就不容易了。
#include
//#include
using
namespace std;
//三腳插頭
class
threephaseplug
void
pluginthree()
};//兩腳插頭
class
twophaseplug
virtual
void
plugintwo()
=0;}
;//void twophaseplug::plugintwo(){}
//兩腳插介面卡
class
twophaseplugadapter
:public twophaseplug
void
plugintwo()
void
conversion()
private
: threephaseplug* m_three;};
intmain()
介面卡模式(類介面卡 物件介面卡)
做個筆記 引用 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...