结构型模式:
- 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。
- 工作中的场景
- 经常用来做旧系统改造和升级
- 其主要意图就是做接口兼容:使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
- 学习中见过的场景
- java.io.InputStreamReader(InputeStream)
- java.io.OutputStreamWriter(OutputStream)
两种适配器模式:类(就是继承,super调用)和对象适配器(使用依赖)模式
主要角色:
- 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
- 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
- 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。
结构图:
对象的适配器模式
Target.interface
public interface Target {
//这是源类Adapteee没有的方法,类比笔记本的usb插口
public void Request();
}
Adaptee.class
public class Adaptee {
//源类,类比插头不兼容的老键盘
public void SpecificRequest(){
System.out.println("老键盘成功接入");
}
}
Adapter.class
public class Adapter implements Target {
// 直接关联被适配类
private Adaptee adaptee;
// 可以通过构造函数传入具体需要适配的被适配类对象
public Adapter (Adaptee adaptee) {
this.adaptee = adaptee;
}
@Override
public void Request() {
// 这里是使用委托的方式完成特殊功能
this.adaptee.SpecificRequest();
}
}
User.class
public class User {
public static void main(String[] args) {
//需要先创建一个被适配类的对象作为参数
Target mAdapter = new Adapter(new Adaptee());
mAdapter.Request();
}
}