适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,公司现有一个开放接口api功能,但是新的公司接入时需要增加或则减少某些数据那么就需要进行新的开发,我们为了复用之前的代码,那么我们就需要一个中间类来将已有的实现做一些转换,这个类就是适配器类。
分类
- 类适配器
- 对象适配器
- 接口适配器
类适配器
类适配器是通过继承已有类的方式来实现。UML如下:
Target为新需求,Adaptee为原有功能,Adapter为适配器类。
代码实现:
//新请求
public interface Target {
void request();
}
//原有功能
public class Adaptee {
public void specRequest() {
System.out.println("原有功能实现");
}
}
//适配器
public class Adapter extends Adaptee implements Target {
@Override
public void request() {
super.specRequest();
}
}
//使用
public class Demo {
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.request();
}
}
对象适配器
通过已有类对象组合实现适配,UML图:
示例代码:
//新请求
public interface Target {
void request();
}
//原有功能
public class Adaptee {
public void specRequest() {
System.out.println("原有功能实现");
}
}
//适配器类
public class Adapter2 implements Target {
//被适配对象
private final Adaptee adaptee;
public Adapter2(Adaptee adaptee) {
this.adaptee = adaptee;
}
//新接口实现
@Override
public void request() {
adaptee.specRequest();
}
}
适配器模式非常简单,在实际开发中灵活运用才是关键。