适配器模式是23种设计模式之一。
适配器模式作用
适配器模式的作用,在于将一个类的接口变换为客户端所期待的另一种接口,使得原本因为接口不匹配而无法一起工作的两个类能在一起工作。
也就是说,适配器模式解决的是接口兼容性问题。
适配器模式实现方式
适配器模式依据实现方式的不同,可以划分为3种:类适配器、对象适配器和接口适配器。
(一)类适配器
类适配器类图如下:
类适配器主要由三部分构成:
- Target:目标角色,也即被转换后的接口;
- Adaptee:源角色,需要被转换的接口;
- Adapter:适配器,负责将Adaptee转换为Target。
使用示例如下:(假定TypeC接口输出的数据格式就是TypeC格式,可能不是,只是为了说明如何使用)
public interface VgaFormatMessage { // target,投影仪直接使用VGA来获得数据的,需要Vga格式的数据
public String getVgaFormat();
}
public class TypeCFormatMessage { // Adaptee:手机输出的TypeC格式的数据
public String typecFormat() {
return "typeC格式的数据";
}
}
public class TypeCtoVgaFormatMessageAdapter extends TypeCFormatMessage implements VgaFormatMessage{
// Adapter:将TypeC格式的数据转换为VGA格式的数据
@Override
public String getVgaFormat() {
String typeCFormatMessage = super.typecFormat();//获得TypeC格式的数据
String vgaFormatMessage = "转换成VGA格式数据:" + typeCFormatMessage;//将TypeC格式的数据转换为VGA格式数据
return vgaFormatMessage;
}
}
//适配器的作用到上面其实就已经结束了,下面只是使用,main方法中是测试
public class Projector {
public void getVgaFormatMessage(VgaFormatMessage vgaFormatMessage) {
String message = vgaFormatMessage.getVgaFormat();
System.out.println(message);
}
//测试
public static void main(String[] args) {
Projector projector = new Projector();
projector.getVgaFormatMessage(new TypeCtoVgaFormatMessageAdapter());
}
}
(二)对象适配器
待更~
(三)接口适配器
待更~