介面卡模式

2021-08-02 23:10:39 字數 1935 閱讀 6687

在計算機程式設計中,介面卡模式(有時候也稱包裝樣式或者包裝)將乙個類的介面適配成使用者所期待的。乙個適 配允

許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在乙個已存在的類中。

基本資訊:

共有兩類介面卡模式:

(1)物件介面卡模式

在這種介面卡模式中,介面卡容納乙個它包裹的類的例項。在這種情況下,介面卡呼叫被包裹物件的物理實體。當客戶在介面中定義了他期望的行為時,我們就可以應用介面卡模式,提供乙個實現該介面的類,並且擴充套件已有的類,通過建立子類來實現適配。

(2)類介面卡模式

這種介面卡模式下,介面卡繼承自已實現的類(一般多重繼承)。物件介面卡」通過組合除了滿足「使用者期待介面」還降低了**間的不良耦合。在工作中推薦使用「物件適配」。

使用的前提:

1.介面中規定了所有要實現的方法

2.但乙個要實現此介面的具體類,只用到了其中的幾個方法,而其它的方法都是沒有用的。

下面是介面卡模式的結構圖:

1.用乙個抽象類實現已有的介面,並實現介面中所規定的所有方法,這些方法的實現可以都是「平庸」實現---

-空方法;但此類中的方法是具體的方法,而不是抽象方法,否則的話,在具體的子類中仍要實現所有的方法,

這就失去了介面卡本來的作用。

2.原本要實現介面的子類,只實現1中的抽象類即可,並在其內部實現時,只對其感興趣的方法進行實現。

具體程式設計**(下面是兩類介面卡模式寫的**,更容易領悟):

(1)類介面卡:

#include #include using namespace std ;

//類介面卡

class player //運動員抽象類

; //名字賦值

string getname() //獲取姓名

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

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

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

; //名字賦值

void attack()

void attack() //進攻

void defense() //防守

};

int main()

(2)物件介面卡:

#include #include using namespace std ;

class player //運動員抽象類

; //名字賦值

string getname() //獲取姓名

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

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

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

; //名字賦值

void attack()

void attack() //進攻

void defense() //防守

}; int main()

兩種方法執行後的結果是一致的,如下圖:

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

做個筆記 引用 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...