定义
将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。这个定义还好,说适配器的功能就是把一个接口转成另一个接口。
适配器模式将现成的对象通过适配变成我们需要的接口。适配器让原本接口不兼容的类可以合作。
适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。
对象适配器模式通过组合对象进行适配。
类适配器通过继承来完成适配。
优点
- 更好的复用性。系统需要使用现有的类,而此类的接口不符合系统的需要。那么通过适配器模式就可以让这些功能得到更好的复用。
- 更好的扩展性。在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。
示例
在下面的示例中,我们有一个目标接口 Target ,一个源接口 Adaptee 和一个适配器类 Adapter 。适配器类实现了目标接口,并且将请求转发到源接口的特定请求方法。客户端代码创建一个适配器对象,并使用它来调用目标接口的方法。
代码语言:javascript复制// 源接口
public class Adaptee {
public void specificRequest() {
System.out.println("Adaptee's specific request");
}
}
public interface Target {
public void request();
}
// 适配器类
public class Adapter implements Target {
private Adaptee adaptee;
public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
}
public void request() {
adaptee.specificRequest();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Adaptee adaptee = new Adaptee();
Target target = new Adapter(adaptee);
target.request();
}
}