適配器模式

聲明 本文內容屬於《Head First 設計模式》閱讀筆記,文中涉及到的知識案例等直接或間接來源於該書。《Head First 設計模式》通過有趣的圖表+文字的形式,讓人自然學習設計模式,非常棒推薦閱讀

提示 適配器模式使用較靈活,本文只是對基本的使用方式進行了簡單闡述。


適配器模式概念

基本概念

        將一個類的方法,轉換爲客戶期望的另一個接口方法。適配器讓原本方法不兼容的類可以合作無間

參考下圖:
在這裏插入圖片描述

角色概念

        通過適配器,我們可以將"廠商類提供的功能"轉換爲"現有系統需要的功能"。這裏面涉及到三個角色:

  • target:適配目標(對應上面的現有系統需要的功能)。

  • adapter:適配器。

  • adaptee:被適配者(對應上面的廠商類提供的功能)。


適配器模式在Java中的常見實現

提示 個人感覺對象適配器更加好用,因爲對象適配器有一個非常大的優勢:對象適配器可以適配Adaptee本身以及Adaptee的子類,而類適配器只能適配Adaptee本身。

類適配器:adapter實現target,繼承adaptee。

提示:如果是其它支持多繼承的語言的話,那麼可以同時繼承target和adaptee。

示例說明:

  • 現有UML圖:
    在這裏插入圖片描述
  • 上圖中涉及到的幾個類:
    1. Duck:
      在這裏插入圖片描述
    2. WildTurkey:
      在這裏插入圖片描述
    3. WildTurkeyToDuckAdapter:
      在這裏插入圖片描述
  • 測試一下:
    1. 測試類:
      在這裏插入圖片描述
    2. 運行測試類,控制檯輸出:
      在這裏插入圖片描述

對象適配器:adapter實現target,持有adaptee。

示例說明:

  • 現有UML圖:
    在這裏插入圖片描述
  • 上圖中涉及到的幾個類:
    1. Duck:
      在這裏插入圖片描述
    2. WildTurkey:
      在這裏插入圖片描述
    3. WildTurkeyToDuckAdapter:
      在這裏插入圖片描述
  • 測試一下:
    1. 測試類:
      在這裏插入圖片描述
    2. 運行測試類,控制檯輸出:
      在這裏插入圖片描述

適配器模式學習完畢 !


^_^ 如有不當之處,歡迎指正

^_^ 參考資料
        《Head First 設計模式》
Eric Freeman & Elisabeth Freeman with Kathy Sierra & Bert Bates著,O’Reilly Taiwan公司譯,UMLChina改編

^_^ 測試代碼託管鏈接
         https://github.com/JustryDeng…DesignPattern

^_^ 本文已經被收錄進《程序員成長筆記(六)》,筆者JustryDeng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章