『设计模式』适配器模式(Adapter)
生活随笔
收集整理的這篇文章主要介紹了
『设计模式』适配器模式(Adapter)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
23種設計模式+額外常用設計模式匯總 (持續更新)
適配器模式(Adapter)
適配器模式把一一個類的接口變換成客戶端所期待的另一種接口,從而使原本接口不匹配而無法在一起工作的兩個類能夠在一起工作。
實際上就是對類或者對象,找到一個翻譯,能夠使得源對象能夠匹配到現對象。軟件系統設計和開發的問題
在軟件系統設計和開發中,這種問題也會經常遇到:
有時為了完成某項工作購買了一個第三方的庫來加快開發。這就帶來了一個問題:我們在應用程序中已經設計好了接口,與這個第三方提供的接口不一致,為了使得這些接口不兼容的類(不能在-起工作)可以在一起工作,Adapter模式提供了將一個類(第三方庫)的接口轉化為客戶(購買使用者)希望接口的方法。
兩種形式
- 類的適配器模式
- 對象的適配器模式
適配器模式結構
從圖中可以看出:客戶端需要調用Request方法,而Adaptee沒有該方法,為了使客戶端能夠使用Adaptee類,需要提供一個包裝(Wrapper) 類Adapter。這個包裝類包裝了一個Adaptee 的實例,從而將客戶端與Adaptee銜接起來。由于Adapter與Adaptee是委派(組合)關系,這決定了這個適配器模式是對象的。
- 目標(Target)角色這是客戶所期待的接口。目標可以是具體的或抽象的類也可以是接口。
- 源(Adaptee)角色需要適配的類
- 適配器(Adapter)角色通過在內部包裝(Wrap)一個Adaptee對象,把源接口轉換成目標接口。
實現要點
- Adapter模式主要應用于“希望復用一些現存的類,但是接口又與復用環境要求不一致的情況”,在遺留代碼復用、類庫遷移等方面非常有用。
- Adapter模式有對象適配器和類適配器兩種形式的實現結構
類適配器采用“多繼承”的實現方式帶來了不良的高耦合,所以一般不推薦使用。
對象適配器采用“對象組合”的方式,更符合松耦合精神。
使用情況
- 系統需要使用現有的類,而此類的接口不符合系統的需要。
- 想要建立一個有以重復使用的類,該類可能與其它不相關的類或不可預見的類(即那些接口可能不一定兼容的類)協同工作。
- (對對象適配器而言)在設計里,你想使用一些已經存在的子類,但是不可能對每一個子類都進行適配。對象適配器可以適配它們的父類接口(使用的擴展)。
優點
- 更好的復用性
- 更好的可擴展性
在實現適配器功能的時候,可以調用自己開發的功能,從而自然地擴展系統的功能
缺點
過多地使用適配器,會讓系統非常凌亂,不容易整體進行把握。
本質
轉換匹配,復用功能。
實現
用戶能看到的接口
package 適配器模式;public class Target {public void Reuqest() {System.out.println("一般請求");} }需要適配的類
package 適配器模式;public class Adaptee {public void specifiRequest(){System.out.println("特殊請求");} }適配器
package 適配器模式;public class Adapter extends Target {private Adaptee adp=new Adaptee();@Overridepublic void Reuqest() {adp.specifiRequest();}}客戶端
package 適配器模式;public class Client {public static void main(String[] args) {Target target=new Adapter();target.Reuqest();} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的『设计模式』适配器模式(Adapter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 『设计模式』 又谈麦当劳的食品--组合模
- 下一篇: B2B、B2C、C2C市场是什么意思啊