來源:《設計模式之禪》java
定義:將一個類的接口 變換成客戶端指望的另外一個接口,從而使本來不匹配而沒法一塊兒工做的兩個類能在一塊兒工做。設計模式
適配器三個角色:ide
Target 目標角色:定義把其餘類接口轉換爲什麼種接口,即指望的接口。spa
Adaptee源角色:將已經存在的、運行良好的的類或對象,經適配器包裝,轉換爲目標角色。設計
Adapter適配器角色:把源角色轉換爲目標角色。code
類圖:對象
代碼:接口
抽象目標角色get
/** * */ package cc.rico.pattern.adapter; /** * @author rico * 抽象目標角色 */ public interface Target { /** * 目標角色方法 */ public void option(); }
具體目標角色io
/** * */ package cc.rico.pattern.adapter; /** * @author rico * 具體目標角色 */ public class ConcreteTarget implements Target { @Override public void option() { System.out.println("####ConcreteTarget.option..."); } }
源適配角色
/** * */ package cc.rico.pattern.adapter; /** * @author rico * 源適配角色 */ public class Adaptee { public void action() { System.out.println("###Adaptee.action..."); } }
適配器角色
/** * */ package cc.rico.pattern.adapter; /** * @author rico * 適配器角色 */ public class Adapter extends Adaptee implements Target { /* (non-Javadoc) * @see cc.rico.pattern.adapter.Target#option() */ @Override public void option() { super.action(); } }
場景類
/** * */ package cc.rico.pattern.adapter; /** * @author rico * 場景類 */ public class Client { /** * @param args */ public static void main(String[] args) { // 源操做 Target target = new ConcreteTarget(); target.option(); // 適配器後操做 target = new Adapter(); target.option(); } }
適配器模式優勢:
能夠使兩個沒有關係的類在一塊兒運行。
增長類間的透明度。
提升類複用性。
靈活性很是好。
適配器模式缺點:
修改一個已經投產的接口。
使用場景:
擴展: