概述
将一個類的接口轉換成客戶希望的另外一個接口,使得原本由于接口不相容而不能一起工作的那些類能一起工作。
擴充卡模式分為類擴充卡模式和對象擴充卡模式,前者類之間的耦合度比後者高,且要求程式員了解現有元件庫中的相關元件的内部結構,是以應用相對較少些。
結構
目标接口:目前系統業務所期待的接口,它可以是抽象類或接口。
适配者類:它是要被通路和适配的現存元件庫中的元件接口。
擴充卡類:它是一個轉換器,通過繼承或引用适配者的對象,把适配者接口轉換成目标接口,讓客戶按目标接口的格式通路适配者。目标接口和适配者類都是固定的,需要根據實際情況設計實作擴充卡類。
類擴充卡模式
類擴充卡通過繼承适配者類來複用已有功能,通過實作目标接口來提供功能。
類擴充卡模式違背了合成複用原則,如果客戶需要的類沒有接口,就無法使用使用類擴充卡,因為無法兩邊都繼承。
對象擴充卡模式
對象擴充卡通過聚合關系複用适配者類的功能,通過實作目标接口來提供功能。
應用場景
以前開發的系統存在滿足新系統功能需求的類,但其接口同新系統的接口不一緻。
使用第三方提供的元件,但元件接口定義和自己要求的接口定義不同。
擴充卡模式舉例
Reader(字元流)、InputStream(位元組流)的适配使用的是InputStreamReader。