介面卡模式(16)

2021-07-26 19:37:44 字數 2937 閱讀 2549

今天我們來講一下介面卡模式。下面,我們描述乙個場景:

不管是籃球隊還是足球隊,都會有外援的,在隊內訓練與安排戰術的時候,外援可能聽不懂漢語的,那麼,他們怎麼交流呢,這就需要乙個翻譯了。其實,這個翻譯就起到了乙個介面卡的效果。

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

系統的資料和執行都正確,但是介面不匹配是,我們可以考慮用介面卡模式來解決。

好,下面我們來看一下介面卡模式的簡單的**結構:

1

///2

///客戶所期待的介面

3///

4class

target510

}11///12

///需要適配的類

13///

14class

adaptee

1520}21

///22

///通過在內部包裝乙個adaptee物件,把源介面轉換成目標介面

23///

24class

adapter : target

2531 }

客戶端呼叫:

1

public

static

void

main()

2

什麼時候使用介面卡模式呢?

1、想使用乙個已經存在的類,但是它的方法和你要求的方法不同時,應該考慮使用介面卡模式。

2、兩個類做的事情相似,但是具有不同的介面時,可以考慮使用介面卡模式。

使用介面卡模式,可以讓客戶端統一的呼叫同乙個介面就行了。這樣可以使**更直接,更簡潔,更緊湊。

好的,下面我們用**來描述一下nba的場景

1

///2

///抽象出來的球員類

3///

4abstract

class

player512

13public

abstract

void attack();//

進攻的方法

14public

abstract

void defense();//

防守的方法15}

16///

17///

前鋒18

///19

class

forwards:player

2024

25public

override

void

attack()

26進攻");

28}2930

public

override

void

defense()

31防守");

33}34}

35///

36///

中鋒37

///38

class

center:player

3943

44public

override

void

attack()

45進攻");

47}4849

public

override

void

defense()

50防守");

52}53}

54///

55///

後衛56

///57

class

guards:player

5862

63public

override

void

attack()

64進攻");

66}6768

public

override

void

defense()

69防守");

71}72 }

客戶端呼叫:

1

public

static

void

main()

2

這裡就有乙個問題了,如果姚明剛來nba是,他對英語不是很精通,所以聽不懂英文,所以,他需要乙個翻譯。換句話說,姚明是外籍中鋒,他需要乙個翻譯者(介面卡)來適配他。

我們有乙個外籍中鋒類

1

class

foreigncenter211

12set

1316}17

18public

void 進攻()//

表明『外籍中鋒』只懂中文『進攻』

19進攻");

21}2223

public

void 防守()//

表明『外籍中鋒』只懂中文『防守』

24防守");

26}27 }

還有乙個翻譯者類,將英文翻譯成他能聽懂的中文"進攻,防守"

1

class

translator:player28

9public

override

void attack()//

翻譯者將'attack'翻譯為『進攻』告訴外籍中鋒

1013

14public

override

void defense()//

翻譯者將'attack'翻譯為『防守』告訴外籍中鋒

1518 }

客戶端:

1

public

static

void

main()

2

這樣,我們就將nba案例用介面卡模式完成了。

其實,在.net中的一些類庫,他們也用到了介面卡模式,我們經常用到的dataadapter就是用到了介面卡模式的應用。

16 介面卡模式

介面卡模式是為了將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作。例如我們的手機充電口都是12v的,是不能直接接到我們的家庭電路上的,因為我們的家庭電路的電壓都是220v的,如果直接連線,可能會把手機給充爆了。這時候就需要乙個介面卡,也就是我們的充...

設計模式 16 介面卡模式

目錄 什麼是介面卡模式 為什麼要用介面卡模式 介面卡模式組成 將乙個類的介面轉換為呼叫方所能用的另一種介面,從而使得原本不適配的介面能適配呼叫,一起工作。這就是介面卡模式。往往很多情況下,因為雙方介面的不一致,現有系統可能無法運用新元件接入,而對現有的系統進行改造代價是昂貴的,從而需要對接入的新元件...

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

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