Appearance
Day 18 - 防腐层(Anti-Corruption Layer)
📖 今日目标
- 理解防腐层的作用
- 掌握防腐层的实现方式
- 学习防腐层与适配器的区别
核心概念
防腐层的目的
防腐层(ACL)的作用是隔离外部系统的影响,保护内部限界上下文的模型不被外部系统污染。
关键要点
1. 防腐层的结构
java
// 防腐层
public class LegacyCustomerAdapter implements CustomerGateway {
private final LegacySystemClient legacyClient;
private final CustomerMapper mapper;
@Override
public Customer findById(CustomerId id) {
// 调用遗留系统
LegacyCustomer legacy = legacyClient.getCustomer(id.getValue());
// 转换为内部模型
return mapper.toDomain(legacy);
}
}2. 与防腐层的区别
| 模式 | 作用 |
|---|---|
| 防腐层 | 转换模型,保护内部 |
| 适配器 | 技术对接 |
3. 防腐层的必要性
- 对接遗留系统
- 对接外部服务
- 保护领域模型的纯洁性
面试考点
问题:防腐层和网关有什么区别?
答案:
- 防腐层侧重于模型转换,保护内部模型
- 网关侧重于协议转换,处理技术差异
防腐层一定包含转换逻辑,网关可能只是简单的转发。
实践思考
🎯 思考题:
在对接多个外部支付系统时,是否需要多个防腐层?设计思路是什么?
📅 学习进度
| Day | 主题 | 状态 |
|---|---|---|
| 01-17 | 战略设计 + 战术 + 架构 | ✅ |
| 18 | 防腐层(Anti-Corruption Layer) | ✅ |
| 19 | 上下文映射器实现 | ⬜ |
| ... | ... | ... |
| 30 | 复习与总结 | ⬜ |
