介面卡模式C 實現

2021-09-25 17:17:53 字數 1788 閱讀 5393

介面卡模式:將乙個類的介面轉換成客戶希望的另乙個介面。介面卡模式讓那些介面不相容的類可以一起工作

結構:

客戶端使用的target類需要使用乙個已經存在的介面adaptee類,可以用兩種方法實現:

1、構造adapter類繼承target類,並實現adaptee介面(介面卡模式的類版本)

2、將乙個adaptee例項作為adapter的組成部分(介面卡模式的物件版本)

類介面卡模式結構圖:

物件介面卡結構圖:

介面卡模式的適用性:

想使用乙個已經存在的類,但它的介面不符合需求。

想建立乙個可以復用的類,該類可以與其它不相關的類或不可預見的類(即那些介面可能不一定相容的類)協同工作。

想使用一些已經存在的子類,但是不可能對每乙個都進行子類化以匹配它們的介面。物件介面卡可以適配它的父類介面。

分別利用類版本和物件版本的介面卡模式模擬實現ps2介面和usb介面的轉換。

我們手中有個ps2插頭的裝置,但是主機上只有usb插頭的介面,實現乙個介面卡將ps2介面轉換為usb介面。其中,ps2介面表示為:

class ps2

class usb。

實驗uml圖

target為:usb

adaptee為:ps2

adapter類公有繼承target,私有繼承adaptee

類介面卡模式**

#include

using namespace std;

/*分別利用類版本和物件版本的介面卡模式模擬實現ps2介面和usb介面的轉換。

我們手中有個ps2插頭的裝置,但是主機上只有usb插頭的介面,實現乙個介面卡將ps2介面轉換為usb介面。其中,ps2介面表示為:

class ps2

usb介面表示為:

class usb。*/

class usb;}

; class ps2;}

; class adapter: public usb, private ps2};

intmain()

物件介面卡**
#include

using namespace std;

class ps2;}

; class usb;}

; class adapter: public usb

private:

ps2 * ps2 = new ps2()

;};int

main()

兩個均呼叫的為specificrequest();

①本次實驗掌握並編碼了介面卡模式的類與物件的兩種不同方法。

②在實現類介面卡和物件介面卡時,注意,物件介面卡模式中的「目標介面」和「適配者類」的**同類介面卡模式一樣,只要修改介面卡類和客戶端的**即可。

介面卡模式(C 實現)

本部落格旨在個人總結回顧 介面卡模式 將乙個類介面轉為換客戶希望的另乙個介面。adapter模式使得由於介面不相容的不能一起工作的那些類可以一起工作。使用場景 主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況。說明 根據使用場景可以推斷出介面卡模式一般不是在軟體設計初期設計的,而...

C 實現介面卡模式

概述 介面卡模式是一種結構性模式,它將乙個類的介面轉換成客戶需要的介面,使得原來由於介面不相容而不能一起工作的類可以一起工作 優點 可以讓沒有關聯的兩個類一起執行 提高了類的復用性 缺點 過多介面卡系統會比較亂,系統的維護性變差 使用場景 當想使用已經存在的類,但是這個類的介面不符合客戶需求 uml...

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

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...