一、adapter是什么
属于结构模式(持有或继承被适配的类)。
对功能类进行包装,转换成客户端希望的样子,所以也叫包装模式。
实现比较直观,比较简单,就是加了一层封装。
二、adapter的使用场景
系统改造:功能在现有类中已实现,仅对外接口不符合要求,可通过adapter兼容。
三、adapter的实现
target:目标定义,客户端期望的样子。
adaptee:被适配者,已有的功能类。
adapter:适配器,封装adaptee为target。
注意:target的形态可以是interface、也可以是抽象类。
代码举例:
// target:目标接口定义
public interface Charger {
public void charge();
}
//adaptee:被适配者,已存在的实现了功能的类
public class Charge220v {
public void charge() {
System.out.println("220v charge工作了");
}
}
//adapter:适配器,利用现有类实现目标接口
public class ChargeAdapter implements Charger {
private Charge220v charge220v;
public ChargeAdapter(Charge220v charge220v) {
this.charge220v = charge220v;
}
@Override
public void charge() {
charge220v.charge();
System.out.println("adapter 转换");
}
}
//client
public class ClientMain {
public static void main(String[] args) {
Charger charger = new ChargeAdapter(new Charge220v());
charger.charge();
Charger charger2 = new ChargeAdapter2(new Charge110v());
charger2.charge();
}
}
四、在源码中的应用
1)IO类:
2)jdbc-odbc-bridge
五、参考
1.较全面的总结:https://blog.csdn.net/qq_37774171/article/details/122643900
2.https://www.oodesign.com/adapter-pattern