适配器模式的定义
适配器模式(Adapter Pattern)是一种结构型设计模式,用于解决接口不兼容问题。通过将一个类的接口转换成客户端期望的另一个接口,使原本因接口不匹配而无法工作的类能够协同工作。
核心角色
目标接口(Target):客户端期望的接口,可以是抽象类或接口。
适配器(Adapter):实现目标接口,并持有被适配者的实例,通过调用被适配者的方法实现接口转换。
被适配者(Adaptee):需要被适配的现有类或接口
实现方式
适配器继承被适配者并实现目标接口,直接复用被适配者的方法。
类适配器(通过继承)
适配器继承被适配者并实现目标接口,直接复用被适配者的方法。
// 目标接口
interface Target {void request();
}// 被适配者
class Adaptee {void specificRequest() {System.out.println("Adaptee method called");}
}// 类适配器
class ClassAdapter extends Adaptee implements Target {@Overridepublic void request() {specificRequest(); // 调用被适配者的方法 }
}
对象适配器(通过组合)
适配器持有被适配者的实例,通过委托调用其方法。
// 对象适配器
class ObjectAdapter implements Target {private Adaptee adaptee;public ObjectAdapter(Adaptee adaptee) {this.adaptee = adaptee;}@Overridepublic void request() {adaptee.specificRequest();}
}
应用场景
1.旧系统接口与新系统不兼容时,通过适配器复用旧代码。
2.需要使用第三方库但接口与现有代码不匹配时。
3.统一多个类的接口以简化客户端调用。
示例代码(客户端调用)
public class Client {public static void main(String[] args) {// 类适配器调用 Target classAdapter = new ClassAdapter();classAdapter.request();// 对象适配器调用 Adaptee adaptee = new Adaptee();Target objectAdapter = new ObjectAdapter(adaptee);objectAdapter.request();}
}