設計模式 介面卡模式

2021-06-19 11:39:02 字數 1845 閱讀 1650

結構性模式:處理多個類組合的關係。

動機:一些現存在的物件放在新環境中,新環境要求的 介面是這個現存的物件不滿足的。

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

。它包括類介面卡和物件介面卡。

物件介面卡:

#include#include using namespace std;

//這個是需要適配的類,這個類已經非常穩定。

class deque

類介面卡

例子2:

#include#include using namespace std;

class cshape //乙個繪圖模型

; virtual void draw() = 0;

};class crectangle : public cshape //可以繪長方形;};

class csquare : public cshape //可以繪正方形。;};

class cview : public cshape

} void draw()

} void addshape(cshape *pshape)

}private:

vectorm_vshape;

};#include "test.h"

int main()

變化:現在需要繪製文字類,有乙個現存的類,但是沒有對應的介面。

class ccontext  //繪製文字基類

; virtual void drawtext() = 0; //這個類與上面的繪圖類介面不一致。

};// 這裡也以輸出一句話來代替具體的draw過程

class ctext : public ccontext

;};

由於類ctext 的父類不是cshape,而且介面跟我們想要的介面不一樣。為了在我們的系統中使用類ctext 來顯示文字,就可以使用介面卡模式建立乙個類ctext 的adapter,使ctext 的介面適應我們已經寫好的檢視系統。

用類介面卡實現。

class cshapetext : public cshape, private ctext

; //這裡實現cshape的介面

private:

void drawtext() //這裡實現ctest的介面

};

具體的使用:

int main()  

用物件適配的實現方式:

class cshapetext : public cshape

; void draw() ; //這裡去呼叫類的方法

private:

ccontext *m_ptext;

};

具體的使用方式:

int main()  

類介面卡:

優點:可以重新定義被適配的類的部分行為。

缺點:不能適配乙個類以及它的子類。

(暫時無法理解)

物件介面卡:

優點:可以適配乙個類以及它的所有子類。

缺點:重新定義被適配的類的行為比較困難。

因此,我們可以得出結論:如果要適配乙個類以及它的子類,或者只是簡單的包裝以轉換介面,那就使用物件介面卡;其他情況就用類介面卡。

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

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

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

設計模式 介面卡模式

01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...