假如我的手機是typec類型的充電口,但是現在卻只有個傳統的MicroUSB充電線,怎么辦?很簡單,弄個轉換接頭,MicroUSB口轉化成typec的,問題解決。這就是適配器的應用。
適配器就是個轉化適配中間接口,可以將不匹配的兩件事整合到一起,把不匹配變的匹配。
通常,適配器有三種:類適配器、對象適配器。
類適配器:繼承實現,靜態定義
對象適配器:代理實現,動態組合模式
一、類適配器
1.1、有個傳統的Micro USB的充電線
package com.cn.adapter.classAdapter; /** * 有個傳統的Micro USB的充電線 * * @author cfang * 2018年6月1日 下午4:13:01 */ public interface MicroUSB { void isMicroUSB(); }
1.2、手機充電口為typec
package com.cn.adapter.classAdapter; /** * 手機充電口為typec * * @author cfang * 2018年6月1日 下午4:14:28 */ public interface TypeC { void isTypeC(); }
package com.cn.adapter.classAdapter; public class TypeCImpl implements TypeC{ @Override public void isTypeC() { System.out.println("typec充電口"); } }
1.3、整個適配器adapter,將MicroUSB 轉化成typec
package com.cn.adapter.classAdapter; /** * 用於將MicroUSB接口轉化成tytpec接口 * * @author cfang * 2018年6月1日 下午4:46:28 */ public class Adapter extends TypeCImpl implements MicroUSB{ @Override public void isMicroUSB() { isTypeC(); } }
1.4、測試main方法
package com.cn.adapter.classAdapter; public class App { public static void main(String[] args) { MicroUSB microUSB = new Adapter(); microUSB.isMicroUSB(); } }
二、對象適配器
2.1、TypeC接口、MicroUSB接口以及實現同上
2.3、適配器類
package com.cn.adapter.objectAdapter; import com.cn.adapter.classAdapter.MicroUSB; import com.cn.adapter.classAdapter.TypeC; public class Adapter implements MicroUSB{ private TypeC typeC; public Adapter(TypeC typeC){ this.typeC = typeC; } @Override public void isMicroUSB() { typeC.isTypeC(); } }
2.4、測試main方法
package com.cn.adapter.objectAdapter; import com.cn.adapter.classAdapter.MicroUSB; import com.cn.adapter.classAdapter.TypeC; import com.cn.adapter.classAdapter.TypeCImpl; public class App { public static void main(String[] args) { TypeC typeC = new TypeCImpl(); MicroUSB microUSB = new Adapter(typeC); microUSB.isMicroUSB(); } }
三、很多時候,還會遇到一種適配器,接口的適配器,很簡單,假如有個很大的接口,幾十個方法,但是並不是每個實現該接口的都必須得實現所有方法,此時,就可以做個抽象的中間類,實現大接口,方法實現都是空。之后開發,都繼承這個抽象類,用哪些方法,就覆寫哪些方法。相對簡單,代碼就不上了。