适配器设计模式
约 470 字
预计阅读 1 分钟
应用场景
- 已经存在的类,它的方法和需求不匹配(方法结果相同或相似)的情况
- 适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案
代码
方法类
1
2
3
| public interface Target {
void methed();
}
|
准备适配的类(这里可以是抽象类也可以是普通类)
1
2
3
4
5
| class ReadyAdapter {
void methed() {
log.info("适配的东西!");
}
}
|
适配类:(如果有抽象类就继承来做适配)
1
2
3
4
5
6
7
8
9
10
11
12
| public class Adapter implements Target {
private ReadyAdapter readyAdapter;
Adapter(ReadyAdapter readyAdapter) {
this.readyAdapter = readyAdapter;
}
@Override
public void methed() {
readyAdapter.methed();
log.info("可以在这里做适配操作");
}
}
|
测试类
1
2
3
4
5
6
7
| public static void main(String[] args) {
Target target = new Adapter(new ReadyAdapter());
target.methed();
}
输出------------------------------------
ReadyAdapter - 适配的东西!
Adapter - 可以在这里做适配操作
|
总结
- 上面写这个属于对象适配器代码实现:这里写的是单个对象的适配,当要适配多个对象时我们可以把多个对象就继承一个类,然后在适配的时候通过InstanceOf来判断做适配。
- 将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。
类图
