Adapter Pattern (轉接器模式)
轉接器模式是一種結構型設計模,可以將一個類別的介面轉換成用戶端預期的另一個介面,使不相容的類別互相合作。
轉接器模式結構
物件轉接器
Adapter實現了其中一個interface,並對另一個物件進行封裝。所有流行的程式語言都可以實現。

類別轉接器
Adapter同時繼承兩個interface。這種方式僅能在支持多重繼承的程式語言中實現,如:C++。

轉接器模式的應用場景
-
當你希望使用某個類,但他的介面與其他介面不相容時,可以使用轉接器模式
轉接器模式允許你創建一個中間類,可以作為與遺留類、第三方類或提供怪異介面的類之間的轉換。
-
如果需要復用一些類,他們處於同一個繼承體系,並且他們額外又有了一些共同方法,但這些共同方法並不是所有這一繼承的子類都具有的性質
可以擴展每個子類,將缺少的功能添加到新的子類中。但是,必須在所有新子類中重複添加這些程式碼,會使的程式碼有壞味道。
將缺少的功能添加到一個轉接器中類中會優雅許多。可以將缺少功能的對象封裝在轉接器中,動態的獲取所需功能。如果要這樣做,目標類必須有通用介面,轉接器的成員變量應該遵循通用接口。這種方式與裝飾模式非常相似。
優缺點
⭕優點
- 單一職責原則,你可以將介面或數據轉換的程式碼從主要的業務邏輯中分離。
- 開放封閉原則,只要客戶端的程式碼通過客戶端介面與轉接器溝通,你就能在不修改現有客戶端程式碼的情況下,在程式碼中添加新類型的轉接器。
❌缺點
- 程式碼整體複雜度增加,因為需要新增一系列介面與類。有時候直接更改服務類讓他與其他程式碼兼容反而會更簡單。