适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个接口转换成另一个接口,以使不兼容的接口能够一起工作。适配器模式充当两个不兼容接口之间的桥梁,允许它们协同工作,而无需修改其原始代码。
场景
已有类的接口与需要的接口不匹配:当你需要使用一个已有类的功能,但它的接口不符合你的需求时,可以使用适配器来创建一个符合需要的接口的包装类。
与第三方代码集成:当你需要与第三方库或组件进行集成,但其接口与你的代码不兼容时,可以使用适配器来适应第三方库的接口。
代码复用:当你希望重用现有的类,但其接口不适用于你的新项目时,适配器可以帮助你重用现有代码。
实现
// 旧接口
class OldSystem {
request() {
return "Response from Old System";
}
}
// 新接口
class NewSystem {
makeRequest() {
return "Response from New System";
}
}
// 适配器类
class Adapter {
constructor(oldSystem) {
this.oldSystem = oldSystem;
}
makeRequest() {
return this.oldSystem.request();
}
}
// 使用新接口
const newSystem = new NewSystem();
console.log(newSystem.makeRequest()); // 输出 "Response from New System"
// 使用适配器,使旧接口适应新接口
const oldSystem = new OldSystem();
const adapter = new Adapter(oldSystem);
console.log(adapter.makeRequest()); // 输出 "Response from Old System"
在上面的示例中,OldSystem 是旧系统的类,它提供了一个名为 request 的方法。NewSystem 是新系统的类,它提供了一个名为 makeRequest 的方法。由于这两个系统的接口不匹配,我们创建了一个适配器类 Adapter,该适配器类包含了旧系统的实例,并实现了新系统的接口。通过适配器,旧系统的 request 方法可以被调用,以适应新系统的 makeRequest 接口。
适配器模式允许在不破坏现有代码的情况下,将不兼容的接口进行整合和协同工作。这对于集成外部库或系统以及复用现有代码非常有用。