DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合

回顾

上文我们讲了事件风暴,找出了系统中所有的事件,都通过"something has been done"的形式描述,如"填空题被创建"等

DDD整体的三个阶段是

第一阶段:战略设计 ->行为模型
第二阶段:战术设计 ->领域模型
第三阶段:实施落地 ->实现模型

命令风暴

什么是命令

命令是领域事件触发的动作,被执行之后,创建领域事件

命令触发的原因有哪些?

  • 用户
  • 外部系统
  • 定时任务
  • 事件

命令风暴的表现方式

DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合_第1张图片

寻找命令的过程

DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合_第2张图片

寻找命令的意义

当找到了需求描述中所有命令,我们就能清晰的了解到系统需要进行哪些操作,分别是由哪些用户,外部系统,定时任务,事件来触发的

寻找聚合

聚合的概念

  • 命令和事件中都出现了的名词
  • 被独立访问的业务单元
  • 一组领域对象的组合

寻找聚合的过程

DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合_第3张图片
如图所示,将命令风暴中整理好的命令,找出对应的命令和事件都出现的名词,将名词相同的命令,按照右图的方式聚合在一起,这样就找到一组领域对象的聚合

聚合的生命周期

聚合是有独立的生命周期

聚合的意义

  • 一组领域对象的集合,且能够构成一个独立的单元存在
  • 识别关键"术语",打破事件的时间线
  • 提供更大的视野,帮助业务模型不断精炼

根据第二节题目中的要求,下边分别给出需求中的命令风暴和聚合整理的图

命令风暴
DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合_第4张图片
寻找聚合
DDD(Domain-Driven Design)领域驱动设计-(三)命令风暴&寻找聚合_第5张图片
至此,已经梳理出了系统中有哪些具体的操作,在哪些实体上有什么样的操作

你可能感兴趣的:(敏捷开发)