返回首页

适配器模式(面试版)

一、面试常考点

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: 适配逻辑持续膨胀、转换成本高于重构收益时应重构。