What
适配器模式(Adaptor Design Pattern)是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。转接器就是一个非常形象的例子,可以连接不同的接口。
Why
- 一般来说,适配器模式可以看作一种“补偿模式”,用来补救设计上的缺陷。应用这种模式实属“无奈之举”。如果在设计初期,我们就能协调规避接口不兼容的问题,那这种模式就没有应用的机会了。
- 其常用的场景有以下几种:
- 封装有缺陷的接口设计
- 统一多个类的接口设计
- 替换依赖的外部系统
- 兼容老版本接口
- 适配不同格式的数据
How
适配器的实现方式有两种对象适配器和类适配器两种,基本结构如下:
// 类适配器: 基于继承
public interface ITarget {
void f1();
void f2();
void fc();
}
public class Adaptee {
public void fa() {
// ...
}
public void fb() {
// ...
}
public void fc() {
// ...
}
}
public class Adaptor extends Adaptee implements ITarget {
public void f1() {
super.fa();
}
public void f2() {
// 重新实现f2()...
}
// 这里fc()不需要实现,直接继承自Adaptee,这是跟对象适配器最大的不同点
}
// 对象适配器:基于组合
public interface ITarget {
void f1();
void f2();
void fc();
}
public class Adaptee {
public void fa() {
// ...
}
public void fb() {
// ...
}
public void fc() {
// ...
}
}
public class Adaptor implements ITarget {
private Adaptee adaptee;
public Adaptor(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void f1() {
//委托给Adaptee
adaptee.fa();
}
public void f2() {
// 重新实现f2()...
}
public void fc() {
adaptee.fc();
}
}
代码地址
写在最后
如果你觉得我写的文章帮到了你,欢迎点赞、评论、分享、赞赏哦,你们的鼓励是我不断创作的动力~
网友评论