将一個類的接口轉換成客戶希望的另外一個接口。adapter模式使得原本由于接口不相容而不能一起工作的那些類可以一起工作。
convert the interface of a class into another interface clients expect. adapter lets classes work together that couldn’t otherwise because of incompatible interface.

由于java不支援多重繼承,即一個類隻能有一個父類,是以本節給出擴充卡模式的類圖按着gof著作的分類屬于對象擴充卡模式的類圖,不是類擴充卡模式的類圖。
對象擴充卡模式的結構中包括三個角色。
+ 目标(target):目标是一個接口,該接口是客戶想使用的接口。
+ 被适配者(adaptee):被适配者是一個已經存在的接口或抽象類,這個接口或抽象類需要适配。
+ 擴充卡(adapter):擴充卡是一個類,該類實作了目标接口并包含有被适配者的引用,即擴充卡的職責是對被适配者接口或是抽象類于目标接口進行适配。
如果目标(target)接口中的方法數目與配适配者(adaptee)接口的方法數目相等,那麼擴充卡(adapter)可将被适配者接口(抽象類)與目标接口進行完全适配。
如果目标(target)接口中的方法數目少于配适配者(adaptee)接口的方法數目,那麼擴充卡隻能将被适配者接口與目标接口進行部分适配。
如果目标(target)接口中的方法數目大于配适配者(adaptee)接口的方法數目,那麼擴充卡(adapter)可将被适配者接口(抽象類)與目标接口進行完全适配,但必須将目标多餘的方法給出使用者允許的預設實作。
目标(target)和被适配者(adaptee)是完全解耦的關系。
擴充卡模式滿足“開-閉原則”。當添加一個實作adaptee接口的新類時,不必修改adapter,adapter就能對這個新類的執行個體進行适配。
使用者需要一個類的子類的執行個體,但不希望與該類的子類形成耦合。
使用者需要一個類的子類的執行個體,但使用者不知道該類有哪些子類可用。
<a href="https://github.com/androidwolf">mygithub</a>