适配器模式(Adapter Pattern)

2018-12-23  本文已影响0人  群众里面有坏人呐

定义

将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。
把一个类的接口变成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。

为什么要用适配器模式

实例

现在安卓主要有两种数据线:Type-C和Micro USB,很多手机都配置了Type-C转接头(适配器),用Type-C的手机有了转接头(适配器)也能用Micro USB充电

类适配器

定义Micro USB类

public class MicroDataLine {
    public void connect(){
        System.out.println("connect with micro data line...");
    }
}

定义DataLine接口

public interface DataLine {
    public void connect();
}

定义TypeCDataLine实现DataLine

public class TypeCDataLine implements DataLine{
    @Override
    public void connect() {
        System.out.println("connect with Type-C data line...");
    }
}

定义适配器继承原有类实现数据线接口

public class TypeCAdaptor extends MicroDataLine implements DataLine {
    @Override
    public void connect() {
        System.out.println("use Type-C adaptor");
        super.connect();
    }
}

测试代码

public class Test {
    public static void main(String[] args) {
        DataLine dataLine = new TypeCDataLine();
        dataLine.connect();
        DataLine adaptor = new TypeCAdaptor();
        adaptor.connect();
    }
}

输出

connect with Type-C data line...
use Type-C adaptor
connect with micro data line...

对象适配器

创建适配器类,实现标准接口,将这个调用委托给实现新接口的对象来处理

public class TypeCAdaptor implements DataLine {
    DataLine dataLine = new TypeCDataLine();
    public TypeCAdaptor(DataLine dataLine) {
        this.dataLine = dataLine;
    }
    @Override
    public void connect() {
        System.out.println("use Type-C adaptor...");
        dataLine.connect();
    }
}

测试

public class Test {
    public static void main(String[] args) {
        TypeCAdaptor adaptor = new TypeCAdaptor(new TypeCDataLine());
        adaptor.connect();
    }
}

输出

use Type-C adaptor...
connect with Type-C data line...
上一篇下一篇

猜你喜欢

热点阅读