跳至主要内容

Adapter Pattern (轉接器模式)

轉接器模式是一種結構型設計模,可以將一個類別的介面轉換成用戶端預期的另一個介面,使不相容的類別互相合作。

轉接器模式結構

物件轉接器

Adapter實現了其中一個interface,並對另一個物件進行封裝。所有流行的程式語言都可以實現。

�物件轉接器模式結構

類別轉接器

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

類別轉接器模式結構

轉接器模式的應用場景

  1. 當你希望使用某個類,但他的介面與其他介面不相容時,可以使用轉接器模式

    轉接器模式允許你創建一個中間類,可以作為與遺留類、第三方類或提供怪異介面的類之間的轉換。

  2. 如果需要復用一些類,他們處於同一個繼承體系,並且他們額外又有了一些共同方法,但這些共同方法並不是所有這一繼承的子類都具有的性質

    可以擴展每個子類,將缺少的功能添加到新的子類中。但是,必須在所有新子類中重複添加這些程式碼,會使的程式碼有壞味道

    將缺少的功能添加到一個轉接器中類中會優雅許多。可以將缺少功能的對象封裝在轉接器中,動態的獲取所需功能。如果要這樣做,目標類必須有通用介面,轉接器的成員變量應該遵循通用接口。這種方式與裝飾模式非常相似。

優缺點

優點

  1. 單一職責原則,你可以將介面或數據轉換的程式碼從主要的業務邏輯中分離。
  2. 開放封閉原則,只要客戶端的程式碼通過客戶端介面與轉接器溝通,你就能在不修改現有客戶端程式碼的情況下,在程式碼中添加新類型的轉接器。

缺點

  1. 程式碼整體複雜度增加,因為需要新增一系列介面與類。有時候直接更改服務類讓他與其他程式碼兼容反而會更簡單。

轉接器模式(Command Pattern)

遇到的需求

遇到的問題