將乙個介面轉換成客戶希望的另乙個介面使得介面不相容的那些類可以一起工作介面卡模式是我個人使用頻率比較高的模式,十分簡單實用。在許多情況下,我們自己的系統a,要使用既有物件b的介面,但無奈我們的既有系統a和b介面不相容,這時候介面卡可以幫我們解決這個問題。
假設現在有乙個函式
static
void request(target *target)
現在我們既有的類target::request
已經無法滿足我們的需求,於是從第三方拿到了乙個可以滿足需求的adaptee
類,可惜該類沒有request
而只有乙個request
方法。於是我們需要將adataptee
包裝成乙個adapter
類提供乙個request
介面,同時包裝類是乙個target
類的子類,這樣就可以滿足需求了,這種包裝有兩種思路,一種是使用多繼承,同時繼承target
和adaptee
類,一種是使用單繼承,繼承target
然後關聯乙個adaptee
。這就是我們說說的介面卡模式,兩種思路分別叫做類介面卡模式和物件介面卡模式。其uml類圖如下:
類介面卡
物件介面卡
示例**如下:
#include
#include
using
std::string;
class target ;
virtual
void request()
};class adaptee ;
virtual
void specificrequest()
};#ifdef class_adapter
class adapter :public target, public adaptee ;
virtual
void request()
};#else
class adapter :public target
virtual ~adapter(){};
virtual
void request()
};#endif
static
void request(target *target)
int main(void)
執行結果:
request = target::request
request = adaptee::request
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式之介面卡模式 c
我們常用介面卡的作用是將220v交流電轉換為5a直流電,這樣就可以給手機充電了,如果在大美利堅旅行,那需要攜帶可以轉換110v交流電的介面卡 介面卡模式是最常用的模式之一,它的出現是為了讓使用者可以從不同的資料提供者處獲取自己想要的東西 常見的如在顯示 資料中間加入介面卡,這樣顯示部分的 可以無需考...
C 設計模式之介面卡模式
生活中的介面卡 買膝上型電腦,買手機時,都有乙個電源介面卡,電源介面卡又叫外接電源,是小型可攜式電子裝置及電子電器的供電電壓變換裝置,常見於手機,膝上型電腦上。它的作用是將家裡的220v高電壓轉換成這些電子產品能工作的5v 20v左右穩定的低電壓,使它們能正常工作。就是說,如果沒有這個電源介面卡,我...