适配器模式通过转换接口解决不兼容问题,封装第三方库或旧模块的差异,使系统无需修改原有代码即可协同工作,提升复用性与灵活性。
适配器模式用于解决接口不兼容的问题。它通过封装一个接口,使其能被系统其他部分正常使用,即使原始接口的结构或方法名不一致。这种模式在不修改原有代码的前提下,让不同接口之间可以协同工作,提升代码的复用性和灵活性。
适配器模式的核心思想是“转换”。就像电源适配器能把110V电压转为220V一样,JavaScript中的适配器模式可以把一
个对象的接口转换成客户端期望的另一个接口。
常见使用场景包括:
假设你项目原本使用一个叫 Logger 的日志工具,它有 log() 方法:
const logger = {
log: function(message) {
console.log('Log:', message);
}
};
现在你想换成一个第三方库 ThirdPartyLogger,它只提供 output() 方法:
const thirdPartyLogger = {
output: function(msg) {
console.log('[ThirdParty] Output:', msg);
}
};
直接替换会破坏原有调用逻辑。这时可以用适配器包装第三方库:
const loggerAdapter = {
log: function(message) {
thirdPartyLogger.output(message);
}
};
现在你可以继续调用 loggerAdapter.log(),无需修改业务代码。
使用适配器模式能带来几个明显好处:
虽然适配器模式很实用,但也需注意几点:
基本上就这些。适配器模式不复杂但容易忽略,合理使用能让代码更灵活。遇到接口不匹配时,先想想能不能用一个简单的适配器来解决,而不是直接改原代码。