2019年参加了"领域驱动设计峰会2019"看到了国内、国外、不同行业在基于DDD的实践分享。
成年热学习的一个特点就是带着自己的经验来思考接收到的内容,那么回顾自己接触DDD有一段时间,将自己的经验和思考作用在项目上,真真切切替换了DDD带给我的提升。
本片内容将不会聚焦在哪些理论上,而是看看那些些提升我开发效率的技术部分(非具体代码的粒度)。
- 充血模型 代替 贫血模型
- Domain + DomainService + ApplicationService
- 基础服务层
- 和业务保持一致
- 统一语言
01 用 充血模型 代替 贫血模型
充血模型的好处是让我最先感觉到收益的地方。
在之前的项目中很多都采用了三层的项目架构设计,短时间内看上去没有什么问题,但是随着项目的进行,Service层变得越来越臃肿,不得不加入其它的约束来让项目结构变得清晰。是的遇到问题、分析问题、解决问题。但是项目毕竟是个团队项目,所以有时候单个人遵守约束很容易,但是让团队都最受这种约束就变的困难的了,所以三层架构在原来的工作中确实带来了一部分问题。
是的,正如上面所言,在简单的场景下,采用贫血模型能够清楚的讲明白的。但是随着业务的丰富,想要通过代码接示业务意图变得异常的困难。
在接触DDD之后,项目开发中,领域模型使用了充血模型,一个领域对象上既包含属性又包含行为,能够保证业务实体为核心的灵