需求:
我们的手机是TypeC接口的充电口,但是充电宝是USB接口的
我们需要一个转换头,将TypeC的接口转换为USB接口
USB接口
public interface IUsb {
// 使用USB接口充电
void chargeWithUsb();
}
USB接口的实现类
public class Usb implements IUsb {
@Override
public void chargeWithUsb() {
System.out.println("使用USB接口充电");
}
}
TypeC接口
public interface ITypeC {
// 使用TypeC接口充电
void chargeWithTypeC();
}
⏹定义一个适配器A
类适配器模式
: 通过继承来实现适配器功能
// 我们在适配其中实现了TypeC的接口,调用了Usb的功能
public class AdapterA extends Usb implements ITypeC {
@Override
public void chargeWithTypeC() {
super.chargeWithUsb();
}
}
⏹定义一个适配器B
对象适配器
: 通过组合来实现适配器功能
public class AdapterB implements ITypeC {
private Usb usb;
// 实例化的时候,将Usb对象传入
public AdapterB(Usb usb) {
this.usb = usb;
}
@Override
public void chargeWithTypeC() {
usb.chargeWithUsb();
}
}
⏹使用转换器充电
// 使用转换器A将TypeC转换为USB
ITypeC adapterA = new AdapterA();
adapterA.chargeWithTypeC(); // 使用USB接口充电
// 使用转换器B将TypeC转换为USB
ITypeC adapterB = new AdapterB(new Usb());
adapterB.chargeWithTypeC(); // 使用USB接口充电