设计模式-适配器模式
在不匹配的调用中,将被调用接口转换成为调用者希望的样子。
我们就拿常见的笔记本接口转换器举例
首先定义一个TypeC的投屏传输协议
public interface TypeC {
void projectionScreenTypeC();
}
MacBook都是通过TypeC的协议进行投屏的
public class MacBook {
public void projectionScreen(TypeC typeC){
System.out.println("MacBook投屏");
typeC.projectionScreenTypeC();
}
}
但是我们买的电视只支持HDMI的协议
public class Tv {
public void projectionScreenHDMI(){
System.out.println("收到 HDMI 投屏信息");
}
}
这个时候我们就需要转接头了
适配器模式有两种实现方式:类适配器模式和对象适配器模式,我们分别实现
public class AdapterClass extends Tv implements TypeC {
@Override
public void projectionScreenTypeC() {
System.out.println("通过Class转换头转换");
this.projectionScreenHDMI();
}
}
public class AdapterObject implements TypeC {
private Tv tv;
public AdapterObject(Tv tv) {
this.tv = tv;
}
@Override
public void projectionScreenTypeC() {
System.out.println("通过Object转换头转换");
tv.projectionScreenHDMI();
}
}
使用
public class Demo {
public static void main(String[] args) {
MacBook mac = new MacBook();
AdapterClass adapterClass = new AdapterClass();
mac.projectionScreen(adapterClass);
AdapterObject adapterObject = new AdapterObject(new Tv());
mac.projectionScreen(adapterObject);
}
}```