实战案例学习DDD建模,串点成树(一):幼宠销售小程序

文摘   科技   2022-12-31 18:35   江苏  

    DDD内涵和外延都非常广泛,全面深入了解和掌握DDD需要关注的点较多,如果这些点散落开来,缺乏一根纽带串接起来,进而形不成一棵知识树,会导致很多人很难快速抓到重点和环环相扣的思路,再加上DDD中有很多关键细节需要实践才能掌握,而细节往往是魔鬼,丢失或混淆这些细节就很容易丧失了DDD的精髓。

     很多人学习DDD很容易从入门到放弃,就是这个原因。

     而通过完整的端到端案例来学习DDD往往可以起到事半功倍的效果,案例可以把完整的建模思路把散乱的点串接起来成为系统的DDD知识树,非常适合DDD的理解、学习和记忆。

     本案例是第一课,后续持续推出不同案例,供大家借鉴参考。

       DDD建模的精髓在于分合二字(如下图),这也是把DDD知识树贯穿起来的线索。

    从上图可以看出,四个象限中每个关键部分都是先分后合,比如:

  •     统一语言是把领域内所有名词动词/介词拆分出来,并消除歧义后合并同类项,典型的先分后合;

  •     BC是把领域概念分离出来,归并到不同BC中去,也是先分后合;

  •     6核心要素(聚合、实体、值对象)也是分离出核心要素后归并入不同模块和分层架构中,还是先分后合;

  •     领域服务是把行为拆分出来重新组合成更内聚的业务行为,服务间调用委托到应用层处理,又是先分后合。

  •     分层架构是把各层功能分开,然后内聚到功能独立的各层中。。。

    以上等等无不是贯彻先分后合的理念,为了大家更好的应用好先分后合,这里我总结了DDD建模的九步法,这同时也是对DDD知识树线索的抽取

    另外再给出一个完整的DDD建模实例,把端到端建模的关键细节都显示表达出来,供大家参照建模。

    古人云:熟读唐诗三百首不会作诗也会吟。通过案例学习是掌握细节的关键,往往可以事半功倍,做到照葫芦画瓢。


案例需求如下:

需求:


九步法:

  • Step 1 统一语言


  • Step 2 事件风暴

聚合一般和BC一一对应,通过事件风暴找到聚合,通过聚合探索BC


  • Step 3 划BC


  • Step 4 BC MAP


  • Step 5 子域

    BC一般和子域一一对应,可以通过BC反过来探索子域。

    有了子域就可以很容易划分核心子域和支撑子域,进而可以决策哪些内容是核心需要自己实现,哪些需要外购或外包来快速实现。


  • Step 6 核心要素



  • Step 7 分层架构


  • Step 8 模块

  • Step 9 六边形架构


    小结,大家可以通过这个案例,全面体会下DDD建模的全步骤,该案例涵盖了业务流程、应用架构、软件架构、部署架构端到端开发流程,希望大家可以获得启发。

    当然,上述每个步骤都有对应的方法论进行支撑,包括:名词动词法、use case法、事件风暴法、CRC法、四色建模法、边界建模法等,后续会把其中每个方法进行详细讲解,供大家参考。


丁辉的软件架构说
代码匠艺,软件系统架构,AI平台和应用,生活趣事。
 最新文章