聲明: 本文
內容屬於《Head First 設計模式》閱讀筆記
,文中涉及到的知識案例等直接或間接來源於該書。《Head First 設計模式》
通過有趣的圖表+文字的形式,讓人自然學習設計模式,非常棒
,推薦閱讀
。
提示: 適配器模式使用較靈活,本文只是對基本的使用方式進行了簡單闡述。
適配器模式概念:
基本概念:
將一個類的方法,轉換爲客戶期望的另一個接口方法。適配器讓原本方法不兼容的類可以合作無間。
參考下圖:
角色概念:
通過適配器,我們可以將"廠商類提供的功能"轉換爲"現有系統需要的功能"。這裏面涉及到三個角色:
-
target:適配目標(對應上面的現有系統需要的功能)。
-
adapter:適配器。
-
adaptee:被適配者(對應上面的廠商類提供的功能)。
適配器模式在Java中的常見實現:
提示: 個人感覺對象適配器更加好用,因爲對象適配器有一個非常大的優勢:對象適配器可以適配Adaptee本身以及Adaptee的子類,而類適配器只能適配Adaptee本身。
類適配器:adapter實現target,繼承adaptee。
提示:如果是其它支持多繼承的語言的話,那麼可以同時繼承target和adaptee。
示例說明:
- 現有UML圖:
- 上圖中涉及到的幾個類:
- Duck:
- WildTurkey:
- WildTurkeyToDuckAdapter:
- Duck:
- 測試一下:
- 測試類:
- 運行測試類,控制檯輸出:
- 測試類:
對象適配器:adapter實現target,持有adaptee。
示例說明:
- 現有UML圖:
- 上圖中涉及到的幾個類:
- Duck:
- WildTurkey:
- WildTurkeyToDuckAdapter:
- Duck:
- 測試一下:
- 測試類:
- 運行測試類,控制檯輸出:
- 測試類:
適配器模式學習完畢 !
^_^ 如有不當之處,歡迎指正
^_^ 參考資料
《Head First 設計模式》Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司譯,UMLChina改編
^_^ 測試代碼託管鏈接
https://github.com/JustryDeng…DesignPattern
^_^ 本文已經被收錄進《程序員成長筆記(六)》,筆者JustryDeng