2021-07-14

DDD的价值

本文是对自己使用DDD的总结,重点不是告诉到家什么是DDD,怎么是DDD,重点是应该在什么样的场景使用并发挥它的最大价值。
在说价值之前,先说说目前的开发模式。
1 产品侧刻画用户故事;
2 开发侧开始进行库表设计并开始叠加代码;
![image.png](https://img-blog.csdnimg.cn/img_convert/c6e507cd7eb672240bc0e3898c015b32.png#clientId=ue7f84d86-7766-4&from=paste&height=265&id=u6ca2bcf5&margin=[object Object]&name=image.png&originHeight=508&originWidth=608&originalType=binary&ratio=1&size=114914&status=done&style=none&taskId=u182fbe47-83ed-40cb-848c-5f0bed3ab3c&width=317)
这种模式也就是目前的敏捷开发,在开发的初期,非常的高效,原因是系统的复杂度不高,也是离散程度不好,熵增不大。
![image.png](https://img-blog.csdnimg.cn/img_convert/bfb80f9bf9bf5ffc31091ec1e5daa3e1.png#clientId=ue7f84d86-7766-4&from=paste&height=302&id=u57f950ed&margin=[object Object]&name=image.png&originHeight=613&originWidth=781&originalType=binary&ratio=1&size=106894&status=done&style=none&taskId=uf90086e3-b0c1-4709-8691-54ca6d910d1&width=385)
但随着项目快速迭代,大量的交叉点出现,系统的复杂性逐渐提高,此时随着项目的控制以及增加人力,还能勉强支撑,对原有系统进行打补丁。

![image.png](https://img-blog.csdnimg.cn/img_convert/cd6448c492dcd01bc7b798fec4463559.png#clientId=ue7f84d86-7766-4&from=paste&height=330&id=ubf8e3dc2&margin=[object Object]&name=image.png&originHeight=492&originWidth=590&originalType=binary&ratio=1&size=87548&status=done&style=none&taskId=uf558aa88-8d8a-4a51-93e4-7652eed7f39&width=396)

等到敏捷开发的后期,已经很难靠人力维持系统的迭代,随着人员的变动,将导致本来留在领域内的知识丢失,最终将变成一团乱麻。即使有通过人力成本,对原有逻辑梳理都是一个很大的问题,此时对与这种问题的解决方案是另起炉灶,而另起炉灶虽然能解决短痛,但随着业务叠加,与老系统打通时是一个很痛苦甚至是一个无法打通的过程。
  • ![](https://img-blog.csdnimg.cn/img_convert/f2b82afbba7d468a2107d3b854140564.png#from=url&height=311&id=t3ahe&margin=[object Object]&originHeight=524&originWidth=748&originalType=binary&ratio=1&status=done&style=none&width=444)

迭代难,演进难,维护难 会是敏捷后期不可避免的痛。
原因是敏捷开发变成了项目管理者的管理工具,不注重模型沉淀,一味的追求迭代速度,有的管理者甚至认为沉淀模型是浪费人力资源。
针对敏捷开发的后期痛点,DDD是如何解决的?DDD是将系统复杂性从无序治理成有序的一种方案。

  • ![](https://img-blog.csdnimg.cn/img_convert/51c20b704c82680dfbd6f8568fa45ef7.png#from=url&id=HIJKu&margin=[object Object]&originHeight=718&originWidth=1922&originalType=binary&ratio=1&status=done&style=none)

1、强调模型价值,将产品侧的心智模型、开发侧的数据模型统一为领域模型(领域模型,是针对特定领域里的关键事物及其关系的可视化表现,是为了准确定义需要解决问题而构造的抽象模型,是业务功能场景在软件系统里的映射转化,其目的是为软件系统构建统一的认知)。
![](https://img-blog.csdnimg.cn/img_convert/d9a18638265571c5a7b7f1d89021cccd.png#from=url&id=vqtSH&margin=[object Object]&originHeight=231&originWidth=238&originalType=binary&ratio=1&status=done&style=none)
2、强调演绎,将复杂的问题划分可执行的子问题。
3、强调归纳,具有相关业务属性的放在一起处理。
4、强调边界,每个领域处理属于自己领域的事情。
5、强调统一语言,就像最终代码是由产品自己写的一样。
6、强调沉淀,在业务进行到特定时候,对模型进行归纳,抽象,为后续支撑更复杂业务做准备。
![image.png](https://img-blog.csdnimg.cn/img_convert/cfe8c5172c7f7d7f2bb090f3ff7327f6.png#clientId=ue7f84d86-7766-4&from=paste&height=187&id=u38c7026a&margin=[object Object]&name=image.png&originHeight=187&originWidth=291&originalType=binary&ratio=1&size=51086&status=done&style=none&taskId=u530acb3a-52c6-4ffe-aec8-44581579c3f&width=291)
DDD是一种有效控制墒增的一个解决方案。随着业务越做越多,模型越来越健壮,支撑能力越强,通过模型对共性抽取,通过拓展点对特性实现,随着通用语言管理,自动维护系统大图,完美的将敏捷开发后期的软肋转化为优点。信人可以迅速了解原有业务,老员工可以根据领域模型快速做系统的迭代。

  • ![](https://img-blog.csdnimg.cn/img_convert/ed420badf40524bb4766e4b2c5f34200.png#from=url&height=181&id=SivcY&margin=[object Object]&originHeight=596&originWidth=998&originalType=binary&ratio=1&status=done&style=none&width=303)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值