DDD的常见问题、争论以及局限性

目录

1、资源库与领域服务的区别?

2、按照DDD写代码是否会导致过度设计?

3、DDD是否战略设计的意义要大于战术设计?

4、模型驱动设计和面向数据库表的设计有什么区别?数据驱动的缺点是什么?为什么要使用DDD?即使不用DDD,而是面向数据库表开发,也能搭建一套稳定的代码结构。

5、为什么要用充血模型?


1、资源库与领域服务的区别?

  • 资源库与领域服务似乎起到的是同一个作用,聚集下方的资源提供给上层调用,这两个有什么实际区别?
  • 资源库与领域服务的区别其实就是仓库和服务窗口的区别,仓库是存取物品,而服务窗口是处理业务的;仓库只包含实体的读写和查询功能,把具体的业务逻辑放在仓库中实现是不合理的,例如:对于银行领域而言,你不能用银行账户的资源库来实现两个账户之间的转账。而领域服务是无处安放的业务逻辑,例如:当需要为系统引入营销功能,即给特定用户提供优惠的折扣,此时计算折扣的逻辑放在实体或值对象是不合适的,当然,更不能放在仓库当中,所以需要使用领域服务来承载这段业务逻辑。

2、按照DDD写代码是否会导致过度设计?

  • 按照DDD写代码的话似乎对编码的要求与系统理解更复杂了,一个业务是由多个领域对象同时分担处理,要是此时项目紧急加人进来做新业务,完全无法了解这些领域对象究竟具体提供了哪些服务,有一种系统被过度设计的感觉;
  • 其实,DDD的一个重要目标就是避免过度设计,如何避免过度设计?代码跟随业务走,而不是让程序员自由发挥;
    • 如何代码跟随业务走?按照领域专家的描述建立模型,且团队中所有人都能理解认可;
    • 系统被过度设计的感觉?业务逻辑复杂度不高,对性能和并发要求比较高,甚至可能都不需要领域专家的参与;
    • DDD与设计模型/面向对象不一样,它的出现只是为了辅助业务复杂系统的分析和设计,并不是解决所有的代码结构的设计问题,这也可以说是DDD的局限性之一。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值