DDD真的有最佳实践吗?

DDD真的有最佳实践吗?就目前来看,没有。DDD不能只靠阅读就能充分理解,需要通过真正的实践,也会遇到挫折和怀疑,需要及时回顾和反复的学习。即使是聚合边界和聚合根的寻找,也是一件有难度的事情。

一种直觉性的实践方法是,看看代码是否有”坏味道“。举例几个例子:

  1. 一个实体持有了大量的其他的实体,比如School类中包含了一个的List<Student>,那么这个实体是不是会显得很笨重?即使用lazy-load来处理Student,仍然是反模式的。那么不如在领域模型层面将二者的引用关系解除掉。当需要操作这个School的所有Student时,在School类的领域方法中再进行处理。
  2. 如果DDD后的代码可读性变差了,那么这和DDD的初衷也是背离的。
  3. 对某类实体A批量操作(如果没有关联到另一个和A有关系的实体B上去)不得不在A中完成也是一种”坏味道“。Evans建议,当你在怀疑是否应该在一个类中放入”坏味道“的方法、其原因是你觉得它不属于这个类时,用一个ServiceFoo类来放这个方法。
  4. 贫血模型和充血模型,究竟选哪个。这两种模型的最大区别是Repository是否属于领域对象。充血模型需要走点弯路去注入Repository,并且测试起来会难一些。其实领域驱动在建模时更关注的是如何提取领域方法并和领域模型整合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值