六、Adapter 適配器模式 (創建型)

六、Adapter 適配器模式 (創建型)
1、意圖:把一個類的接口變換成客戶端所期待的另一種接口,從而使原本接口不匹配而無法在一起工作的兩個類能夠在一起工作。

2、場景:假設網絡遊戲的客戶端程序分兩部分。一部分是和服務端通訊的大廳部分,大廳部分提供的功能有道具購買、讀取房間列表、創建房間以及啓動遊戲程序。另一部分就是遊戲程序了,遊戲程序和大廳程序雖然屬於一個客戶端,但是由不同的公司在進行開發。遊戲大廳通過實現約定的接口和遊戲程序進行通訊。
     一開始的設計就是,大廳程序是基於接口方式調用遊戲程序啓動遊戲場景方法的。在大廳程序開發接近完成的時候,公司決定和另外一家遊戲公司合作,因此希望把大廳程序能適用另一個遊戲。而這個新遊戲的遵循的是另一套接口。是不是可以避免修改原先調用方法來啓動場景呢?或許你會說,既然只有一個方法修改,那麼修改一下也無妨,我們假設大廳程序和遊戲程序之間有100個接口,其中的大部分都有修改呢?因爲遊戲程序接口的修改,大廳程序可能要修改不止100個地方。這樣接口的意義何在呢?
     此時可以考慮使用Adapter模式來適配這種接口的不匹配情況。

 

示例代碼

5、何時採用
  -- 從代碼角度來說, 如果需要調用的類所遵循的接口並不符合系統的要求或者說並不是客戶所期望的,那麼可以考慮使用適配器。
  -- 從應用角度來說, 如果因爲產品遷移、合作模塊的變動,導致雙方一致的接口產生了不一致,或者是希望在兩個關聯不大的類型之間建立一種關係的情況下可以考慮適配器模式。

6、實現要點
  -- 適配器模式是否能成功運用的關鍵在於代碼本身是否是基於接口編程的,如果不是的話,那麼適配器無能爲力。
  -- 適配器模式的實現很簡單,基本的思想就是適配器一定是遵循目標接口的。
  -- 適配器模式的變化比較多,可以通過繼承和組合方式進行適配,適配器可以是一組適配器產品,適配器也可以

是抽象類型。
  -- 適配器模式和Facade的區別是,前者是遵循接口的,後者可以是不遵循接口的,比較靈活。
  -- 適配器模式和Proxy的區別是,前者是爲對象提供不同的接口,或者爲對象提供相同接口,並且前者有一點後補的味道,後者是在設計時就會運用的。

7、注意事項
  -- 在對兩個無關類進行適配的時候考慮一下適配的代價,一個非常龐大的適配器可能會對系統性能有影響。

發佈了97 篇原創文章 · 獲贊 9 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章