適配器模式(Adapter Pattern)是做爲兩個不兼容的接口之間的橋樑。這種類型的設計模式屬於結構型模式,它結合了兩個獨立接口的功能。java
這種模式涉及到一個單一的類,該類負責加入獨立的或不兼容的接口功能。設計模式
意圖
將一個類的接口轉換成客戶但願的另一個接口。
適配器模式使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。this
主要解決
主要解決在軟件系統中,經常要將一些"現存的對象"放到新的環境中,而新環境要求的接口是現對象不能知足的。設計
如何解決
繼承或依賴(推薦)。code
關鍵代碼
適配器繼承或依賴已有的對象,實現想要的目標接口。對象
使用場景
有動機地修改一個正常運行的系統的接口,這時應該考慮使用適配器模式。blog
注意事項
適配器不是在詳細設計時添加的,而是解決正在服役的項目的問題。繼承
Adaptee
接口:Robot.java
。提供cry()
和run()
方法。public interface Robot { void cry(); void move(); }
Adaptee
接口:BioRobot.java
。它能夠叫和慢慢跑public class BioRobot implements Robot{ public void cry() { System.out.println("仿生機器人叫....."); } public void move() { System.out.println("仿生機器人慢慢移動...."); } }
Target
類:Dog.java
。它能夠汪和快跑public class Dog { public void wang(){ System.out.println("小狗叫:汪汪....."); } public void run(){ System.out.println("小狗快快跑......"); } }
Adapter
,這個適配器可以使仿生機器人像狗同樣叫,同樣跑。public class DogAdapter implements Robot{ Dog dog; public DogAdapter(Dog dog){ //取得要適配的對象的引用 this.dog = dog; } /** * 實現接口中的方法,只須要在相應的方法間進行轉換便可完成。 */ public void cry() { System.out.println("機器人模擬狗叫..."); dog.wang(); } public void move() { System.out.println("機器人模擬狗跑..."); dog.run(); } public static void main(String[] args) { BioRobot robot = new BioRobot(); //首先咱們須要一個機器人 Dog dog = new Dog(); //和一隻狗 //將這隻狗包裝到機器人中,使其有點兒像機器人 Robot dogRobot = new DogAdapter(dog); //而後是機器人叫和跑 System.out.println("BioRob cry....."); dogRobot.cry(); dogRobot.move(); } }
運行結果:接口
BioRob cry...... 機器人模擬狗叫... 小狗叫:汪汪...... 機器人模擬狗跑... 小狗快快跑......