天天看點

設計模式-擴充卡模式-Adapter擴充卡模式-Adapter

擴充卡模式-Adapter

原文位址: https://github.com/mumushuiding/golang-design-pattern/tree/master/01_Adapter

把一個"錯誤"的接口? 轉換 為希望的形式。它處理的是? 比對 問題。

⚡️ 類圖

擴充卡模式中,建造一個擴充卡有兩種可能性:

  • ⚡️ 基于 類 的擴充卡(簡稱類擴充卡);
  • ? 基于 對象 的擴充卡(簡稱對象擴充卡);
設計模式-擴充卡模式-Adapter擴充卡模式-Adapter
設計模式-擴充卡模式-Adapter擴充卡模式-Adapter

⚡️類擴充卡

擴充卡的類實作調用 接口 targetInterface, 并把對擴充卡的調用 委托給它所繼承的對象targetClass.

?參與者

下面列出擴充卡模式的參與者:

  • targetClass (需要被比對的類). 類 targetClass 通過接口的方式operationB()對外提供操作,但是這些接口并不與客戶所要求的operationA()比對, 是以客戶不能直接調用這個類
  • client (客戶).客戶想使用 targetClass 類, 但是由于自身的需求,客戶并不具備使用這個類的接口.
  • targetInterface (目标接口). 這個接口能夠滿足客戶的需求,而且必須被實作.因為這個接口與 targetClass 類的接口不比對,是以需要一個擴充卡.
  • Adapter (擴充卡).以客戶client要求的接口形式 operationA() 去調整 targetClass 類的接口 operationB().通過擴充卡 Adapter 類可以使client和targetClass對象進行通信.

?對象擴充卡

對象擴充卡會? "瘦" 一些,其它同類擴充卡基本相同, 類擴充卡中Adapter完全繼承targetClass(目标類)的屬性和方法, 而對象擴充卡隻引入 屬性.就不做介紹了.

?評價

?優點

擴充卡有下列優點:

  • ?可以在 不相關 的軟體元件間進行資訊交換.
  • ➕可以 擴充 功能
  • ?可以調整和 優化

?缺點

擴充卡有以下缺點:

  • ?複雜的擴充卡會導緻 時間 的延誤
  • ♻️擴充卡可以根據解決方案單獨調整,這會導緻 複用性 降低

繼續閱讀