适配器模式通过“翻译层”实现新旧系统兼容,不修改老代码,仅做字段映射、类型转换和结构拆分;推荐对象适配器,配合工厂支持多源接入,且严格限定只做纯转义,不掺杂业务逻辑。

先找准三类典型不兼容点
对接时卡住,往往就卡在这几个变量层面的细节上:
-
字段名不一致:比如老对象用
userName,新接口要求full_name -
数据类型或单位不同:老系统返回余额是
double元,新系统只收int分 -
结构嵌套层级错位:老对象把整个地址拼成一个字符串
addressStr,新接口却要拆成province、city、detail三个独立字段
用对象适配器做轻量转换
推荐组合方式的对象适配器——安全、易测试、不受单继承限制。它内部持有一个老对象实例,在方法里专注做映射和换算:
- 老类:
OldUser { String userName; double balance; String addr; } - 新接口:
UserInfo { String getFullName(); int getBalanceInCents(); String getProvince(); } - 适配器里不做业务逻辑,只做字段赋值、数值乘100、字符串解析等纯转义操作
多旧源接入时配个简单工厂
当不止一个老旧系统要对接(比如A系统用XML、B系统用JSON、C系统用自定义协议),可搭配工厂类统一创建适配器:
- 工厂根据来源标识(如
sourceType = "legacy-a")返回对应适配器实例 - 新增一个旧系统,只需新增一个适配器类 + 工厂分支,不影响已有逻辑
- 所有适配器都实现同一目标接口,上层调用完全无感
注意边界:只转义,不掺活
适配器的职责必须干净:
- 不处理校验、日志、重试、缓存等业务逻辑
- 不修改老对象状态,只读取并转换
- 异常尽量透传或标准化包装,避免在适配层吞掉关键错误信息











