贫血模型
贫血模型指的是领域对象中只有数据,没有行为,由于过于单薄,就好像人贫血了一样,显得不太健康。
这种风格违背了面向对象的原则。
富领域模型
领域对象里既包含数据,也包含行为。
DDD 编程原则
现在包括 Martin Fowler 在内的很多人现在是编程范式的“中立主义者”,并不局限于面向对象,而是将面向对象、面向过程、面向方面、函数式等等编程范式结合起来。
根据目前国内多数人的编程习惯,在领域对象不直接或间接访问数据库的前提下,尽量面向对象。
DDD 强调,在代码编写阶段,如果发现模型的问题,要及时修改模型,始终保持代码和模型的一致。
“开卡”和“验卡”
- 开卡:真正动手编码之前,找老王确认需求
- 验卡:在代码开发完毕,正式提交测试之前,也会把领域专家或测试人员叫过来大体看一下有没有方向上的错误
和业务人员不断澄清需求,不断补充新的领域知识,正是 DDD 和敏捷软件开发的常态。
代码目录结构
|
|
一张图看懂依赖倒转
- 箭头指向的是「被依赖方」
- application 层的 OrgService 调用 domain 层的 OrgRepository 接口
- adapter 层的 OrgRepositoryImpl 实现了 domain 层的 OrgRepository 接口
这个是精简版本,原文图更全
练习代码
只实现了 Org save(Org org) 保存数据到 MySQL 功能,其他功能我也没有完全明白,后续再说