一、为何要用适配器模式
经过适配器模式设计后,可以使原本接口不匹配而无法一起工作的两个类能够在一起工作。就像我们平时充电时:假设当前我们手头只有Type-C,而我们要充电的设备充电端口是Micro-USB,此时我们就需要一个转接头,这个转接头就是本文描述的适配器。
二、如何用适配器模式
假设你刚买了一台设备,但是用的是Micro-USB的接口,然而你目前只有Type-C的数据线。在你万般无奈的时候,你突然想起家里有一个Type-C转Micro-USB的转接头……
-
类适配器
-
TypeC类:即Type-C数据线
-
MicroUSB接口:即Micro-USB数据线
-
Adapter类:即转接头
-
Test类:测试转接头是否能用
//Type-C数据线 class TypeC{ String desc = "Now we can charge with Type-C"; public void chargeByTypeC() { System.out.println(desc); } } //Micro-USB数据线 interface MicroUSB{ public void chargeByMicroUSB(); } //数据线转接头 class Adapter extends TypeC implements MicroUSB{ public void chargeByMicroUSB() { super.chargeByTypeC(); } } //测试 public class Test { public static void main(String[] args) { //拿到一个数据线转接头 Adapter adapter = new Adapter(); //用这个转接头去把Type-C适配成Mirco-USB接口,如此这般我们的设备就可以充电了 adapter.chargeByMicroUSB(); } }
-
-
对象适配器
//Type-C数据线 class TypeC{ String desc = "Now we can charge with Type-C"; public void chargeByTypeC() { System.out.println(desc); } } //Micro-USB数据线 interface MicroUSB{ public void chargeByMicroUSB(); } //数据线转接头 class Adapter implements MicroUSB{ private TypeC typec; public Adapter(TypeC typec) { this.typec = typec; } public void chargeByMicroUSB() { this.typec.chargeByTypeC(); } } //测试 public class Test { public static void main(String[] args) { //现在有一根Type-C数据线 TypeC typec = new TypeC(); //拿到一个数据线转接头 Adapter adapter = new Adapter(typec); //用这个转接头去把Type-C适配成Mirco-USB接口,如此这般我们的设备就可以用Mirco-USB充电了 adapter.chargeByMicroUSB(); } }
与类适配器所不同的时,这个的适配器类只需要实现Type-C接口,还在适配器的实现中做了些许改变。