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()));
}
}