适配器模式(Adapter Class/Object)
是指将一个接口转换成客户端希望的另外一个接口,该模式使得原本不兼容的类可以一起工作。
适配器有4种角色:
1.目标抽象角色(Target):定义客户所期待的使用接口。(GVI接口)
2.源角色(Adaptee):需要被适配的接口。(HDMI接口)
3.适配器角色(Adapter):把源接口转换成符合要求的目标接口的设备。(HDMI-VGI转换器)
4.客户端(client):例子中指的VGI接口显示器。
适配器模式优点
1.可以让任何两个没有关联的类一起运行。
2.提高了类的复用。
3.增加了类的透明度。
4.灵活性好。
适配器模式缺点
过多地使用适配器,会让系统非常零乱,不易整体进行把握。
适用场景:
1.系统需要使用现有的类,而此类的接口不符合系统的需要。
2.想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。
3.通过接口转换,将一个类插入另一个类系中。
//MicroUSB接口,客户端所期待的接口
interface MicroUSB {
void process();
}
//USBTypec接口,需要被适配的接口
interface USBTypec {
void process();
}
class Phone implements MicroUSB {
@Override
public void process() {
System.out.println("使用MicroUSB接口进行充电");
}
}
class Car implements USBTypec {
@Override
public void process() {
System.out.println("使用USBTypec接口进行充电");
}
}
//适配器,将USBTypec接口转换成MicroUSB
class USBTypecToMicroUSB implements MicroUSB {
USBTypec usbTypec;
public USBTypecToMicroUSB(USBTypec usbTypec) {
this.usbTypec = usbTypec;
}
@Override
public void process() {
System.out.println("USBTypec接口转换成MicroUSB");
//将USBTypec接口转换成MicroUSB接口
usbTypec.process();
}
}
public class Main {
public static void main(String[] args) {
USBTypec usbTypec = new Car();
USBTypecToMicroUSB tTom = new USBTypecToMicroUSB(usbTypec);
tTom.process();
}
}
USBTypec接口转换成
MicroUSB
使用USBTypec接口进行充电