8.1
介面卡模式定義:
介面卡模式將乙個類的介面,轉換成客戶期望的另乙個介面,介面卡模式讓原本介面不相容的類可以互相合作。
8.2
介面卡模式
uml類圖:
8.3應用場景:
我們平常所說的網路介面卡即網絡卡就是介面卡最典型的乙個例子。我們網絡卡的
client
端(網路裝置)是
rj-45
介面,網絡卡為介面卡,被介面卡(主機板)是
pci介面。很明顯,介面卡的作用即是把互不相同介面連線在一起,這樣一來,客戶就可以利用被適配者提供的服務了。軟體開發過程當中也同樣如此:如果客戶只知道
a介面而又想利用實現了
b介面的類的服務,那麼我們就可以利用介面卡模式。例如客戶(
client
)在呼叫
itarget
中的request()
方法的背後其實際是呼叫了實現了
isource(
這裡isource
是被適配者實現的介面,
uml類圖中沒有劃出來,個人覺得應該給出)的
request()
方法。這樣做的好處是:當我們被適配者需要更換時(意味著被適配者的介面也可能變換),可以通過建立不同的介面卡進行介面轉換,讓不相容的介面變得相容,這樣因為客戶所依賴的
itarget
介面永遠不變,以後不管和什麼樣的介面對接,變化都被封裝在了介面卡內部,這樣就實現了客戶和被適配者的解耦了。如果在一段時間內,我們想改變被適配者的介面,介面卡可以將改變的部分封裝起來,客戶就不必應對不同的介面而更改。
8.4
介面卡模式分析與實現(
c#描述):
//客戶使用(依賴)的介面
public
inte***ce
itarget
//被適配者使用的介面1
public
inte***ce
isource1
//被適配者使用的介面2
public
inte***ce
isource2
//具體實現類a, 實現ia介面
public
class
classa : itarget
public
void method2()
}//具體實現類b, 實現isource1介面
public
class
classb : isource1
public
void method2()
}
//具體實現類c, 實現isource2介面
public
class
classc : isource2
public
void method2()
}
//很明顯,我們不能讓ia宣告的變數直接引用classb,因為classb實現的是ib介面。然而,我們可以通過建立乙個介面卡來完成這個任務。
//第乙個介面卡,其被適配者實現的是isource1介面。
public
class
adapter1 : itarget
public
void method1()
public
void method2()
}
//第二個介面卡,其被適配者實現的是isource2介面。
public
class
adapter2 : itarget
public
void method1()
public
void method2()
}
//呼叫類
public
class
adapter_test
}
至此,介面卡模式完畢。
(八)介面卡模式
介面卡模式 adapter 將乙個類的介面轉換成客戶希望的另乙個介面.adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作.dp 介面卡模式主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況。介面卡模式主要分為兩種 使用乙個已經存在的類,但如果它的介面和需要的...
設計模式 八 介面卡模式
1 生活中的場景 轉接頭之類的 2 什麼是介面卡模式?3 模式中的角色 4 例項 類適配方式 被適配類 被適配的類 public class adaptee 目標介面 public inte ce target介面卡類 介面卡類 轉接器 類適配方式,但是類只能單繼承不利於擴充套件 public cl...
設計模式八 介面卡模式
將乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作。通俗的講,在不改變老系統的功能介面情況下,作向下相容。spring中以adapter結尾的都是。功能 對原來對賬號密碼登入方式,新增第三方登入。老介面 public class siginse...