設計模式學習筆記(三)--適配器模式(Adapter)
阿新 • • 發佈:2018-06-01
rac code 建立 system 代碼復用 static 筆記 計算 希望
什麽叫適配器模式?將一個接口轉換成客戶希望的另外一個接口,Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。
該模式主要用於希望復用一些現存的類(這些類的數據和行為都正確,但接口不符)。
適配器模式結構圖
現在舉個例子,公司派了個技術大牛去美國一個公司參加技術交流會,技術大牛只會啞巴英語,表示計算機專業英語聽起來很吃力。主辦方很貼心,給大牛配了個翻譯。在這個例子中,美國技術專家們講解知識相當於需要適配的接口,這裏翻譯就相當於適配器,將英語翻譯成中文以便我們公司的大牛可理解就相當於客戶所希望的接口。
下面是Java代碼實現
這是我們希望轉化成的接口
1 //客戶所希望的接口,可以是具體的或抽象類,也可以是一個接口2 abstract class Target{ 3 //講解 4 public abstract void interpret(); 5 }
美國技術專家balabala
1 //需要適配的類(美國專家講解技術知識) 2 class Adaptee { 3 //講解內容 4 private String content ="Speak English"; 5 6 public Adaptee(String content){ 7 this.content = content; 8 } 9 10 publicvoid specialInterpret() { 11 System.out.println(content); 12 } 13 14 }
翻譯來啦
1 //適配器(翻譯) 2 class Adapter extends Target{ 3 4 private String content = "我是美國技術專家,講解balabala"; 5 public Adaptee adaptee = new Adaptee(content);//建立一個Adaptee,包裝成我們所希望的樣子 6 @Override 7 publicvoid interpret() {//表面上調用interpret(),實際上specialInterpret() 8 adaptee.specialInterpret(); 9 } 10 11 }
客戶端測試代碼:
1 public class AdapterTest { 2 public static void main(String[] args) { 3 Target target = new Adapter(); 4 target.interpret();//對於客戶端來說調用的就是target的interpret() 5 } 6 7 }
看一下運行結果
小結:適配器模式主要用於有現成的類和接口,但接口並不能直接拿來用,且又不能立馬改掉的情況。通過適配器轉換成我們所希望的接口,實現代碼復用。
設計模式學習筆記(三)--適配器模式(Adapter)