Real Word Example
目的/使用時機
-
讓原來不兼容的介面可以互相偕同工作。(如無法修改或增加內容的 existing class, 或第三方 class,視為 adaptee)
-
將既有的介面轉換為客戶端能使用的介面。(保留/不修改 client 端使用方式)
-
實作方式為 wrap 既有的 class 成新的 class (adapter)。
UML
優點
- 遵循 client interface 而去實作 adapter,不會動到既有 client 與 adaptee ,符合開放封閉原則。
缺點
-
增加複雜度,需增加一個 client interface 與 adapter class。
-
有些時候可簡單修改 service class(adaptee)即可供 client 使用。