一、前言
接著看設計模式,今天介紹的是介面卡模式,介面卡對於大家應該不陌生,就是適配兩種不同型別的物體。如兩孔插座和三孔插頭之間就需要用到介面卡才能正常工作,而在程式世界中,也存在著介面卡,下面來分析介面卡模式。
二、介面卡模式定義
定義:將乙個類的介面,轉換成客戶期望的另乙個介面,介面卡讓原本介面不相容的類可以合作無間。
從定義可以看出介面卡模式主要起到乙個轉化的作用,相當於乙個中間轉化層。其類圖如下
說明:對類圖的說明如下
① target是介面卡實現目標介面。
② adapter是介面卡,用於進行適配。
③ adaptee是被適配者,所有的請求都委託給被適配者。
客戶端通過目標介面呼叫介面卡的方法對介面卡發出請求;介面卡使用被適配者介面把請求轉化成被適配者的乙個或多個呼叫介面;客戶接收到呼叫的結果,但並未察覺這一切是介面卡在起作用。
三、示例說明
假設如下的場景,去餐廳就餐時,點了乙份牛排,發現上的卻是乙份香煎豬排,餐廳竟然用豬排代替牛排,可能是餐廳的牛排已經賣完了,就用豬排冒充了牛排,站在餐廳的角度來看,採用介面卡模式就可以達到這樣的目的。
系統的類圖與上面給出的類圖相似, target對應steak(牛排),adapter對應porkchopadapter(豬排介面卡),adaptee對應friedporkchop。
3.1 v1.0
steak
view code
friedsteak
view code
porkchopadapter
view code
porkchop
view code
main(用作測試)
view code
執行結果
so delicious說明:通過介面卡模式,這樣就完成了從豬排到牛排的轉化。not so delicious
四、總結
介面卡可以將兩個不同型別的介面進行適配,讓其之間可以轉化,其與裝飾者模式有些類似的地方,如都包裝了物件,進行方法的**。但是兩者的意圖是完全不一樣的,裝飾者模式是擴充套件包裝的物件的行為或責任,而介面卡模式則是對介面進行轉化,只是兩者都利用了組合來實現不同的目的。所有源**已經上傳至github,歡迎fork,謝謝各位園友的**~
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式 介面卡模式
01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...