适配器模式通过添加“翻译层”实现新旧系统兼容,不修改原有代码;典型不兼容点包括字段名不同、数据类型或单位不一致、结构嵌套层级错位;推荐组合式对象适配器,配合工厂支持多源扩展,且只负责转义、不掺杂业务逻辑。

适配器模式通过在新旧系统之间加一层“翻译层”,不改动任何原有代码,就能让老旧接口被新系统正常调用。它不强求老代码适应新规范,而是让新系统能理解老接口的“语言”。
识别三类典型不兼容点
实际对接中,接口不兼容往往集中在变量层面:
-
字段名不同:比如老对象用
userName,新系统要求full_name -
数据类型或单位不一致:老系统返回金额是
double元,新接口只接受int分 -
结构嵌套层级错位:老对象把完整地址存为字符串
addressStr,新接口需要拆成province、city、detail三个独立字段
用对象适配器做轻量级转换
推荐采用组合方式的对象适配器,安全、易测、不受单继承限制。例如:
- 老对象:
OldUser { String userName; double balance; String addr; } - 新接口:
UserInfo { String getFullName(); int getBalanceInCents(); String getProvince(); } - 适配器持有一个
OldUser实例,在方法里做字段映射、数值换算、字符串解析等转换
配合工厂支持多源扩展
当不止一个旧系统要接入时,可搭配简单工厂:
- 定义统一适配器接口,如
UserAdapter - 为每个旧系统实现具体适配器类(
LegacySystemAAdapter、LegacySystemBAdapter) - 工厂根据来源标识(如数据源类型、版本号)返回对应适配器实例,新系统调用时完全无感
保持旧逻辑稳定,新系统干净可控
适配器只负责“转义”,不掺杂业务判断或流程控制:
- 老系统出错,错误原样透传,不掩盖原始上下文
- 新系统升级时,只需调整适配器,不影响老模块运行
- 测试可聚焦在字段映射和单位换算逻辑上,边界清晰
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











