Bootstrap

适配器模式

1.核心本质

1.用于将一个类的接口转换成客户端期望的另一个接口。它主要用于解决接口不兼容的问题。

2.允许不兼容接口的类能够一起工作,充当一个转换器。

3.解决接口之间的不匹配,使得原本由于接口不兼容而不能在一起工作的类可以协同工作。

springmvc中的处理器适配器就是典型例子

2.代码练习

2.1 类适配器

2.1.1 被适配者
/**
 * 被适配者 外设
 */
public class Adaptee {

    public void request(){
        System.out.println("连接外设");
    }
}
2.1.2 扩展坞接口(新接口)
/**
 * 扩展坞接口
 */
public interface DockingStation {
    //处理请求,连接外设
    void connect();
}
2.1.3 适配器
/**
 * 类适配器
 * 单继承 只能适配被适配者类的一个接口
 * 单继承类似于只有一个类型的接口,对象继承可以实现多个
 */
public class Adapter extends Adaptee implements DockingStation{
    @Override
    public void connect() {
        super.request();
    }
}
2.1.3 客户端(老接口)
/**
 * 客户端
 * 电脑类  想要连接外设 接口不够 需要扩展坞
 */
public class Computer {
    public void net(Adapter adapter){
        adapter.connect();
        System.out.println("键盘连接成功");
    }
}
2.1.5 测试类
public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.net(new Adapter());
    }
}

2.2 对象适配器

修改适配器的被适配者传入方式

2.2.1 适配器
/**
 * 对象适配器
 */
public class Adapter implements DockingStation {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void connect() {
        adaptee.request();
    }

}
2.2.2 测试类
public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.net(new Adapter(new Adaptee()));
    }
}

;