适配器模式:将一个类的方法接口转换成客户希望的另一个接口
它主要包括以下角色:
目标接口(Target):定义满足目前系统需求的接口,可以是抽象类或者接口。
适配器类(Adapter):实现目标抽象类或者接口和适配者类之间的转换。
适配者类(Adaptee):与目前系统需求不兼容的类,需要被适配的类。
客户类(Client):调用目标接口。
1、优点
- 可以让任何两个没有关联的类一起运行;
- 增加了类的透明性;
- 提高了类的复用度;
- 灵活性非常好;
2、缺点 - 过多使用适配器会使系统非常凌乱;
- 由于java是单继承的,所以只能适配一个适配器类,而且目标类必须是抽象的;
- 只有碰到无法改变原有设计和代码的情况下,才会考虑适配器模式;
适配器模式的使用场景
1、系统需要使用现有的类,从而类的接口不符合系统的需要。
2、想建立一个可以重复使用的类,用于一些彼此之间没有太大关联的一些类。
3、通过接口转换,将一个类插入另一个类中。
示例:
目标接口(Target):
public interface InterfaceSata {
String installInterfaceSata();
}
适配器类(Adapter):
public class InterfaceAdapter extends HardDiskM2 implements InterfaceSata {
public String installInterfaceSata() {
String m2 = super.installInterfaceM2();
// 进行m2接口转换sata接口逻辑
// ......
return "sata";
}
}
适配者类(Adaptee):
public class HardDiskM2 {
public String installInterfaceM2(){
System.out.println("m2硬盘安装接口是m2");
return "m2";
}
}
客户类(Client):
public class Client {
public static void main(String[] args) {
InterfaceSata interfaceSata = new InterfaceAdapter();
interfaceSata.installInterfaceSata();
}
}