23種設計模式總篇::https://chenmingyu.top/categories/設計模式/java
適配器模式屬於結構型模式,又叫包裝模式git
定義:
把一個類的接口變換成客戶端所期待的另外一種接口,從而使本來接口不匹配而沒法一塊兒工做的兩個類可以在一塊兒工做github
在現有的系統中有新舊兩個接口,因爲新舊接口不兼容致使客戶端調用出現問題,可是現有系統還須要使用舊的接口,因此這個接口不能重構,可是爲了可以讓客戶端正常調用,咱們就須要將新的接口轉換成舊的接口,這種解決方式就是適配器模式設計模式
角色:ide
適配器模式是爲了在擴展應用的時候減小代碼時才使用的,因此最初設計系統時不要考慮使用適配器模式測試
源碼地址:https://github.com/mingyuHub/design-patternsthis
Target
,咱們指望的接口模樣,供客戶端調用設計
/** * @author: chenmingyu * @date: 2019/2/18 18:38 * @description: 目標接口 */ public interface Target { /** * 客戶端訪問的目標接口 */ void request(); }
Adaptee
的adapterMethod
方法是咱們指望被適配的方法code
/** * @author: chenmingyu * @date: 2019/2/18 19:20 * @description: 被適配類 */ public class Adaptee { /** * 被適配的接口 */ public void adapterMethod(){ System.out.println("我是要被適配的方法"); }; }
Adapter
,將被適配類Adaptee和目標接口Target接口組合到一塊兒blog
/** * @author: chenmingyu * @date: 2019/2/18 19:20 * @description: 適配器 */ public class Adapter implements Target { /** * 被適配類 */ private Adaptee adaptee; public Adapter(Adaptee adaptee) { this.adaptee = adaptee; } @Override public void request() { adaptee.adapterMethod(); } }
public static void main(String[] args) { Adaptee adaptee = new Adaptee(); Adapter adapter = new Adapter(adaptee); adapter.request(); }
輸出
我是要被適配的方法
設計模式之禪:https://www.kancloud.cn/sstd521/design/193573