跳到主要内容

适配器模式

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端期望的另一个接口。适配器模式允许原本由于接口不兼容而不能一起工作的类能够一起工作。

适配器模式有两种主要类型:

  1. 类适配器模式: 使用多继承或接口实现的方式,在适配器类中适配被适配类和目标接口。

  2. 对象适配器模式: 使用对象组合的方式,将被适配类的实例嵌入到适配器类中,并实现目标接口。

以下是一个简单的 JavaScript 示例,演示了对象适配器模式:

// 目标接口
class Target {
request() {
throw new Error('request method must be implemented by subclasses.');
}
}

// 被适配类
class Adaptee {
specificRequest() {
console.log('Adaptee handles the specific request.');
}
}

// 对象适配器
class Adapter extends Target {
constructor(adaptee) {
super();
this.adaptee = adaptee;
}

request() {
this.adaptee.specificRequest();
}
}

// 客户端代码
const adaptee = new Adaptee();
const adapter = new Adapter(adaptee);

adapter.request();
// Output: Adaptee handles the specific request.

在这个例子中,Target 是目标接口,Adaptee 是被适配类,Adapter 是适配器类。适配器类将目标接口和被适配类结合在一起,使得客户端可以通过目标接口调用被适配类的方法。

适配器模式在实际应用中常用于以下情况:

  • 将新接口适配成已有接口,以复用已有的代码。
  • 允许已有类与其他类协同工作,尤其在第三方库或遗留代码中的接口不符合当前系统需求时。
  • 通过适配器将不同类库、模块或组件整合在一起。

适配器模式有助于解决接口不兼容的问题,使得不同的类能够协同工作,同时提高了代码的可维护性和灵活性。