适配器模式是一种将不同接口的类组合在一起使用的设计模式,或者是将原有类组合进现有接口体系的设计模式,他是处理类于类之间的关系的,打个比方,usb充电线要与插座板一起使用就需要一个插头充当适配器;
适配器可以通过两种形式实现,一种是继承,一种是组合,下面对两种形式分别进行展示:
继承方式:
目标接口:
public interface Charger {
void charge();
}
目标类:
public class USBLine {
public void transfer(){
System.out.println("使用USB线充电...");
}
}
适配器:
public class Adapter extends USBLine implements Charger{
@Override
public void charge() {
super.transfer();
}
}
Client:
public class Client {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.charge();
}
}
这样adapter类可以认为是继承了Changer接口的USBLine类;
组合方式:
只需要对adapter类进行改造:
public class Adapter implements Charger{
USBLine usbline;
public Adapter(USBLine usbline){
this.usbline = usbline;
}
@Override
public void charge() {
usbline.transfer();
}
}
新的适配器类不再继承目标类,转而持有目标对象,可以达到同样的效果;
其实在大多数情况下,组合模式要优于继承模式,因为前者有更低的耦合性