設計模式系列漫談之十 介面卡模式

2022-02-28 07:47:41 字數 2339 閱讀 9760

故事

隨著追求者與日俱增,小雪已經成了一名眾人追捧的情人。小雪的手機功能越來越強,也同時給從事外貿工作的小雪增加了很多便利。我想,不久的將來,經典design pattern必將製造出比「芙蓉姐姐」還要大紅大紫的「模式小姐」。

可是,現在的小雪又遇到新的煩惱。前天的產品交易會上,小雪認識了一名來中國投資的日本商人。幾個小時交談,小雪的美麗、聰慧、善良給這名日本商人留下深刻的印象,並彼此留下了通訊方式。事後,小雪才想起她的手機不支援日文顯示,怎麼辦呢?

我們建議,在不改變原來功能的基礎上,增加乙個能夠把日文簡訊翻譯成中文簡訊的功能,然後按照原來的方式進行傳送。

介面卡模式的解決方案

介面卡角色(nokiaadapter、motorolaadapter、sansungadapter):把源介面轉換成目標介面。這一角色必須是類,並且繼承源角色類。

目標角色介面如下:

namespace

xiaoxue

}介面卡角色類如下:

namespace

xiaoxue

}public

class

motorolaadapter : motorola,ijapanmessage

}public

class

sansungadapter : sansung,ijapanmessage}}

由於增加介面卡角色,工廠類如下:

namespace

xiaoxue

return

message;}}

}客戶端呼叫方法:

imessage message

=japanmessagefactory.createjapanmessage(

"nokia");

//傳送日文簡訊

((ijapanmessage)message).sendjapanmessage(

"ありがとうございます

"); 

2) 物件的adapter模式

目標角色(ijapanmessage):這是客戶所期待的介面。

源角色(nokia、motorola、sansung):需要適配的類。實現**見:設計模式系列漫談之二 - 工廠方法模式

配器角色(nokiaadapter、motorolaadapter、sansungadapter):通過聚合方式包裝(wrap)源角色物件,實現源介面轉換成目標介面。

目標角色介面同上

介面卡角色如下:

namespace

xiaoxue

public

void

sendjapanmessage(

object

japanmsg)

public

void

sendmessage(

object

msg)

}public

class

motorolaadapter :ijapanmessage

public

void

sendjapanmessage(

object

japanmsg)

public

void

sendmessage(

object

msg)

}public

class

sansungadapter : ijapanmessage

public

void

sendjapanmessage(

object

japanmsg)

public

void

sendmessage(

object

msg)}}

由於增加介面卡角色,工廠類實現如下:

namespace

xiaoxue

return

japanmessage;}}

}客戶端呼叫方法:

ijapanmessage message

=japanmessagefactory.createjapanmessage(

"nokia");

//傳送日文彩信

message.sendjapanmessage (

"ありがとうございます

"); 

為了更能說明介面卡模式,引用乙個生活例子:我使用的dell筆記本的輸入電壓是19.5v,但是我們生活電壓一般為220v,那麼我就必須用通過專用的筆記本電源把220v轉換為19.5v,那麼這個筆記本電源就是adapter。

設計模式系列 介面卡模式

見名知其意,介面卡可用於對多個不相容介面提供適配橋梁 介面卡模式屬於結構型模式。在現實世界中,這個模式適用的較為廣泛,比如 diy 一些電子產品,主要元器件提供的是標準介面,那麼無論我們購買什麼品牌的元器件,最終都能組裝起來正常執行。1 定義擴充套件介面和受支援的型別 public inte ce ...

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

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

設計模式系列之七介面卡模式

介面卡模式 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。對於介面卡模式,實際上就是乙個轉介面的概念。比如iphone7的耳塞必須通過轉接才能適配,比如水貨筆記本的插頭必須通過乙個轉介面才能適配國內的插座等。下面通過 來具體認識一下介面卡模式。原始介面 publ...