适配器模式(面试版)
一、面试常考点
1. 适配器模式解决什么问题
把不兼容接口转换为调用方期望接口,避免大面积改造旧代码。
2. 何时使用
第三方库接口与内部规范不一致,或新老系统并行期。
3. 常见追问
适配器和重构边界如何判断。
二、细节介绍
1. 核心思想
调用方不变,增加一层转换器完成协议/格式映射。
2. 优点
低侵入兼容旧系统,迁移成本可控。
3. 代价
适配层过多会掩盖底层设计问题。
三、示例代码
// 旧接口
function oldRequest(url, success, fail) {
setTimeout(() => success({ code: 0, data: { name: 'Tom' } }), 50)
}
// 新系统统一 Promise 风格
function requestAdapter(url) {
return new Promise((resolve, reject) => {
oldRequest(
url,
(res) => resolve(res),
(err) => reject(err)
)
})
}
requestAdapter('/user').then((res) => console.log(res.data.name))
四、常用应用场景
1. 新老接口迁移
把 callback 风格统一为 Promise/async。
2. 多端协议统一
把 Web、App、小程序响应结构统一成同一数据模型。
3. 第三方 SDK 接入
对外暴露统一业务接口,隐藏 SDK 差异。
五、高频追问标准答法(Q/A)
1. Q: 适配器是不是临时方案
A: 多数是迁移期方案,但也可长期作为反腐层存在。
2. Q: 什么时候应该重构而不是继续适配
A: 适配逻辑持续膨胀、转换成本高于重构收益时应重构。