1、Adapter模式簡介
Adapter就是一個目標不能直接拿來使用,需要轉換。如電源適配器…
《設計模式》一書中對Adapter模式的意圖是這樣敘述的:
將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使原本由於接口不兼容而不能一起工作的類可以一起工作。
2、Adapter模式關鍵特徵
意圖 |
使控制範圍之外的一個原有對象與某個接口匹配 |
問題 |
系統的數據和行爲都正確,但接口不符。通常用於必須從抽象類派生時。 |
解決方案 |
Adapter模式提供了具有所需接口的包裝類。 |
參與者與協作者 |
Adapter改變了Adaptee的接口,是Adaptee與Adapter的基類Target匹配。這樣Client就可以使用Adaptee了,好像它是Target類型。 |
效果 |
Adapter模式使原有對象能夠適應新的類結構,不受其接口的限制。 |
實現 |
1、 對象Adapter模式:將原有類包含在另一個類中。讓包含類與需要的接口匹配,調用被包含類的方法。 2、 類Adapter模式:通過多重繼承實現。創建一個新類,該類同時從兩個類繼承:從定義其接口的抽象類共有繼承;從訪問其實現的原有類私有繼承。 |
3、 Facade模式與Adapter模式比較
|
Facade模式 |
Adapter模式 |
是否存在既有的類? |
是 |
是 |
是否必須按某個接口設計? |
否 |
是 |
對象需要多態行爲嗎? |
否 |
可能 |
需要更簡單的接口嗎? |
是 |
否 |