擴充卡模式(adapter):将一個類的接口轉換成客戶希望的另外一個接口。adapter
模式使得原本由于接口不相容而不能一起工作的那些類可以一起工作。
适用場景:
1、已經存在的類的接口不符合我們的需求;
2、建立一個可以複用的類,使得該類可以與其他不相關的類或不可預見的類(即那些接口可能不一定相容的類)協同工作;
3、在不對每一個都進行子類化以比對它們的接口的情況下,使用一些已經存在的子類。
uml圖:
擴充卡的意義在于,就是為了将已存在的東西(接口)轉換成适合我們的需要、能被我們所利用。非常形象的比喻:就像生活中的手機充電器,電腦的電源擴充卡一樣。擴充卡就行client和target的中間件。
代碼實作:
普通接口
特殊接口:
是以我們要實作普通和特殊的功能,
測試
小結
使用對象組合的方式,用修改的接口來包裝适配者
被适配者的任何子類也可以搭配擴充卡使用
個人覺得使用擴充卡最大的好處是 不需要修改用戶端以及被适配者的代碼。
需要實作所有的方法去完成适配,如果目标非常大,那麼工作量也比較大。
note:之前提到的都是 對象擴充卡,另外還有一種叫做 類擴充卡,不過類擴充卡需要多重繼承去實作(adapter需要繼承target和adaptee),而不是組合的方式去實作。
擴充卡是:将一個接口轉成另一個接口
裝飾者是:不改變接口,但加入新的責任
外觀模式是:讓接口更簡單