首页 > 其他分享 >对DDD使用的一些建议

对DDD使用的一些建议

时间:2022-08-29 10:05:40浏览次数:74  
标签:建议 代码 系统 业务 面向对象 使用 时候 DDD

群里经常看到类似于“看了DDD之后就不会写代码了”的情况,趁最近学车的间隙,写写我的看法。

    关于这个事儿,我是觉得:当没有DDD的时候,如果你知道怎么做,那就那么做好了,不要考虑DDD。

    当然不是说学了不用,而是在无法直接与实际做对应的情况下,先不要对应,慢慢来。这是一套方法论,而不是具体的方法,它更多的是给一个对当前系统复杂性手足无措的人一个思路。其中聚合那一部分只是个前提,并不是DDD的重要部分。

    初做设计,学习DDD的时候,边看书可以边将内容与面向对象的各种设计原则、基本准则做对比,储备相关知识,领会面向对象的精神。学习设计的时候,完全没必要去考虑DDD该如何落实到代码这种程度。在我看来,DDD就是一种面向对象的最佳实践,就像设计模式是面向对象基本原则的最佳实践一样,当一个新手不知道如何写代码,可以选择性的模仿。

    虽说不是系统简单就用不了DDD,“每行代码都是一个设计”,但是初学者应该是在手中的系统变得越来越复杂,涉及的业务对象越来越多而感到困扰的时候,才是能真正利用上DDD。一个新进的设计者这时借助DDD的思路去规划业务、去与其他团队协作,或许才能体会出其中的好处。

    当年初出茅庐,遇到了些业务庞大、逻辑复杂的系统。在思考如何解决复杂性的时候,其实已经将业务对象封装成类似“聚合、聚合根”的形式了。只是项目推进的过程遇到了很多问题,也没有根据变化情况区分层次。然后顺着这些问题找到了DDD,它系统地解决了我的问题,并指出了一个方向。

    虽说理想情况下是系统逐渐变得复杂,通过敏捷的方式按部就班的演进系统。但是也会有半路接手的问题,这些都是要在方法论思路的指导下灵活掌握的。至于一开始就很复杂的系统,完全可以在T型集成之类的方法下,持续敏捷的去做,就当作是系统再逐渐复杂也无不可。

    虽说学习都是从模仿开始的,但DDD应该是模仿其解决复杂性的思路,而不是实现的代码,开发技巧这种层面的事儿。这方面,公众号里只发过两篇(以前博客园博客还写过一些,不过没整理过来),大概谈过这类内容,大家可以参考:《DDD概述》、《观画有感之软件开发》。虽然现在看来也有些可以商榷的地方,但是对初学者应该还是不错的。

    最后,我想顺便说一下和微服务的事儿。我认为DDD和微服务是完全不同的两个东西,虽然在一些条件下,它们比较契合。微服务更多的是从技术和团队组织结构上划分的,DDD的子域更多的是从业务逻辑、业务稳定程度方面划分,很多时候确实会有重叠。但学习DDD的时候还是忽略这些重叠比较好,混淆了就出不来了。如果有特别情况,比如中台的业务逻辑按各自领域提供服务,而某一个特别功能的访问量奇大,那它的部署,服务间引用与业务的紧密程度可能并不对应,会需要取舍。

转 https://www.cnblogs.com/saaav/p/16623462.html

标签:建议,代码,系统,业务,面向对象,使用,时候,DDD
From: https://www.cnblogs.com/wl-blog/p/16634880.html

相关文章

  • 泛型的具体使用以及反射赋值
    泛型必须要有<T>不然编译报错TresponseDto,Class<T>tClass这个必须是同一个类传过来publicclassBindCardHelperTest{publicstaticvoidmain(String[]args)......
  • 服务器跑分软件GeekBach的使用【需要外网】
    压缩包下载地址https://www.geekbench.com/download/linux/新建跑分文件夹,上传至服务器,解压缩tarzxvf./Geekbench-5.4.5-Linux.tar.gz进入目录cdGeekbench......
  • pom.xml中导入 feign 启动Spring启动应用程序时Bean创建错误 可能版本不兼容 使用和s
    启动Spring启动应用程序时Bean创建错误当我尝试运行springboot应用程序时,我遇到了以下异常:组织。springframework。豆。工厂BeanCreationException:创建名为“configura......
  • 使用java 求完数
    完数是什么如果一个数恰好等于它的真因子之和,则称该数为“完全数” [2]  。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的......
  • 根据当前用户使用登陆设备进行判断(移动端或pc)
    需求概括:原jsp页面,pc端页面大小风格在移动端使用时部分页面缺失。现要求进行页面自适应改造,使其可以在移动端进行页面自适应。大致想法为根据用户使用登入系统的方式进行......
  • 三丰主机数据库对外使用操作
    设备mysql数据库对外使用的方法:一、找到使用电脑的互联网IP二、进行界面设置  通过以上设置,就可以正常访问数据库了......
  • 使用 QuickSort 算法解决排序数组
    使用QuickSort算法解决排序数组这里我们将讨论一个案例,如何将一系列数字以随机排列的数组的形式排序,使其成为从最小到最大的数字序列。我们将使用最后一个元素的方法......
  • Codesys提升程序运行效率之AND_THEN、OR_ELSE运算符的使用
    之前看到有博文写Codesys程序编写标准中有一条,多个判断条件的if-else-语句,可能性最大的条件应放到最前面,这样可减少PLC处理的时间。但是根据测试,情况并非如此。下面的例子......
  • 使用Java刷评论为平台引流的经历
    场景:需要在一网站中批量评论留言。分析接口:列表接口获取idList;评论接口使用的是get请求,拼接上id。获取idList接口:http://yyy.xxx.cn/?r=matchV4/search/GetJson&page=2&p......
  • Pclint的适配以及使用方法
    Pclint的适配以及使用方法一.简介C/C++语言的语法拥有其它语言所没有的灵活性,这种灵活性带来了代码效率的提升,但相应也使得代码编写具有很大的随意性,另外C/C++编译器......