概念
适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的接口之间进行协同工作,使得原本由于接口不匹配而无法合作的类能够一起工作。
具体内容
适配器模式主要包括以下几个要素:
- 目标接口(Target Interface): 客户端期望的接口,适配器模式的目标是使被适配者(Adaptee)的接口能够符合目标接口。
- 适配器(Adapter): 实现目标接口,并包含一个对被适配者的引用。适配器负责将被适配者的接口转换成目标接口,从而使得客户端可以与被适配者协同工作。
- 被适配者(Adaptee): 需要被适配的接口。被适配者是原本无法与目标接口直接协同工作的类。
类结构图
适用场景
- 现有系统与新系统的集成: 当引入新组件或系统时,为了与现有系统协同工作,可以使用适配器模式来统一接口。
- 第三方库的使用: 当使用第三方库或组件时,其接口可能不符合当前系统的需求,通过适配器可以使其与系统其他部分协同工作。
- 接口版本升级: 当接口发生变化,为了保持向后兼容性,可以使用适配器模式适配新旧接口之间的差异。
实现
// 目标接口
// 目标接口
class Target {
request() {
console.log("Target's request");
}
}
// 被适配者
class Adaptee {
specificRequest() {
console.log("Adaptee's 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(); // 调用适配器的request,实际上执行了被适配者的specificRequest