設計模式 07 介面卡模式與外觀模式(隨遇而安)

2021-08-18 23:17:08 字數 3167 閱讀 5599

物件介面卡

類介面卡

物件和類介面卡的區別

外觀模式

外觀模式示例

模式測試

外觀模式 定義

將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間

優勢可以將改變的部分封裝起來,客戶就不必為了應對不同的介面而每次跟著修改。

符合oo設計原則:使用物件組合,以修改的介面包裝被適配者。

額外的優點:被適配者的任何子類,都可以搭配著介面卡使用。

這個模式是如何把客戶和介面繫結起來,而不是和實現繫結起來的。

實現介面卡模式要注意的地方

使用介面卡的過程

將火雞適配為鴨子,鴨子為target,火雞為adaptee

將火雞適配為鴨子,鴨子為target,火雞為adaptee

public

inte***ce duck

public

abstract

class wildturkey : turkey

public

void

gobble()

}

public

class turkeyadapter : wildturkey, duck

//這個方法是正宗的

public

void

quack()

}

物件介面卡:

public

class turkeyadapter : duck{}

介面卡實現了鴨子的介面,但它收到方法呼叫時,會委託給火雞

類介面卡

public

class turkeyadapter : wildturkey, duck{}

通過擴充套件兩個類(鴨子和火雞)介面卡使得火雞可以相應對鴨子的請求

定義提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。

優勢

public

class hometheate***cade

public

void

wacthmovie(string movie)

public

void

endmovie()

}

結果
public void test()

static void testduck(oa.duck duck)

輸出
------火雞------

gobble gobble

fly a

short distance

------鴨子------

火雞quack

鴨子fly

------火雞介面卡(物件)------

gobble gobble

fly a

short distance

------火雞介面卡(類)------

fly a

short distance

gobble gobble

結果
hometheate***cade htf = new hometheate***cade(new amplifier(), new tuner(), new ***player(),

new cdplayer(), new projector(), new theaterlights(),

new screen(), new popcornpopper());

htf.wacthmovie("變形金剛");

htf.endmovie();

輸出
開始**電影 變形金剛...

呼叫了popcornpopper的on方法...

呼叫了popcornpopper的pop方法...

呼叫了theaterlights的dim方法...value為10...

呼叫了screen的dowm方法...

呼叫了projector的on方法...

呼叫了projector的widescreenmode方法...

呼叫了amplifier的on方法...

呼叫了amplifier的on方法...***player為patterndemos.facadepatterndemo.model.***player...

呼叫了amplifier的setsurroundsound方法...

呼叫了amplifier的on方法...value為5...

呼叫了***player的on方法...

呼叫了***player的play方法...電影為:變形金剛...

結束電影...

呼叫了popcornpopper的off方法...

呼叫了theaterlights的on方法...

呼叫了screen的up方法...

呼叫了projector的off方法...

呼叫了amplifier的off方法...

呼叫了***player的stop方法...

呼叫了***player的eject方法...

呼叫了***player的off方法...

設計模式 介面卡與外觀模式

介面卡模式 將乙個類的介面,轉換成客戶期待的另乙個介面,介面卡讓原本介面不相容的類可以合作無間。外觀模式 提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。外觀模式白話 開啟電視,你要插電源,再按下遙控的 開 鍵,同時為了你要由音量,也要把音量鍵 開 按一...

設計模式 介面卡模式與外觀模式

2015年1月31日21 00 07 說實話我覺得介面卡模式和外觀模式就是乙個意思,區別就在於使用初衷。另外介面卡模式和裝飾者模式很像,根據需要自己選擇使用那一種。介面卡模式的本質是對被適配的乙個或者多個類進行包裝以提供乙個目標格式的介面,對於呼叫者來說,被適配者的呼叫過程是透明的。介面卡模式是為了...

介面卡模式與外觀模式

客戶新的需求,需要我們實現類似歐洲插座 電流介面卡 美國產筆記本插頭的東西,如下所示 使用介面卡模式充滿良好的oo設計原則 使用物件組合,以修改的介面包裝被適配者 同時被適配者的任何子類,都可以配著介面卡使用。需要注意 該模式是如何把客戶和介面繫結,而不是和實現繫結。上圖是物件介面卡,物件介面卡利用...