可能是我大脑不是很聪明的缘故,网上讲的DDD领域模型看的不太明白。不过看完下面的实战,估计就会懂了。
钱包业务示例
1,基于贫血模型的传统开发模式
这是一个典型的 Web 后端项目的三层结构。
- 实体类
- Controller层
- Service层
2,基于充血模型的 DDD 开发模式
-
领域模型层(可以大致理解为实体类加上封装的指令)
-
Service层(将入参转为领域模型层,执行)
总结
基于充血模型的 DDD 开发模式跟基于贫血模型的传统开发模式相比,主要区别在 Service
层。在基于充血模型的开发模式下,我们将部分原来在 Service 类中的业务逻辑移动到了一
个充血的 Domain 领域模型中,让 Service 类的实现依赖这个 Domain 类。
在基于充血模型的 DDD 开发模式下,Service 类并不会完全移除,而是负责一些不适合放
在 Domain 类中的功能。比如,负责与 Repository 层打交道、跨领域模型的业务聚合功
能、幂等事务等非功能性的工作。
基于充血模型的 DDD 开发模式跟基于贫血模型的传统开发模式相比,Controller 层和
Repository 层的代码基本上相同。这是因为,Repository 层的 Entity 生命周期有限,
Controller 层的 VO 只是单纯作为一种 DTO。两部分的业务逻辑都不会太复杂。业务逻辑
主要集中在 Service 层。所以,Repository 层和 Controller 层继续沿用贫血模型的设计思
路是没有问题的。
更多前沿技术,面试技巧,内推信息请扫码关注公众号“云计算平台技术”