适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。这种模式允许不同接口的类能够相互工作。在TypeScript中,适配器模式通常用于处理现有类与新代码之间的兼容性问题。

适配器模式的组成部分:

  1. 目标接口(Target): 定义客户端期望的接口,可以是一个抽象类或接口。

  2. 适配器(Adapter): 实现目标接口,并包装一个被适配者对象,将被适配者的接口转换成目标接口。

  3. 被适配者(Adaptee): 需要被适配的类或接口。

TypeScript适配器模式的实现:

考虑一个简单的例子,假设有一个旧的类 OldSystem,它有一个方法 legacyMethod,而新的系统期望一个名为 newMethod 的方法。可以使用适配器模式来使这两个系统协同工作。

typescript
// 被适配者class OldSystem {  legacyMethod(): void {    console.log("Legacy Method is called");
  }
}// 目标接口interface Target {  newMethod(): void;
}// 适配器class Adapter implements Target {  private oldSystem: OldSystem;  constructor(oldSystem: OldSystem) {    this.oldSystem = oldSystem;
  }  newMethod(): void {    console.log("Adapter is calling the Legacy Method");    this.oldSystem.legacyMethod();
  }
}// 客户端代码function clientCode(target: Target): void {
  target.newMethod();
}// 在适配器中使用被适配者const oldSystem = new OldSystem();const adapter = new Adapter(oldSystem);// 客户端调用clientCode(adapter);

在上述例子中,OldSystem 是被适配者,Target 是目标接口,Adapter 是适配器。适配器将目标接口 newMethod 转换为调用被适配者的 legacyMethod 方法。

适配器模式的主要优势在于能够在不改变现有代码的情况下引入新的功能或库。这在现代化系统与遗留系统集成、或者引入外部库的时候非常有用。