Skip to main content Link Search Menu Expand Document (external link)

内容正在准备中

参考资料

  • https://c4model.com/
  • https://github.com/ddd-crew/welcome-to-ddd

概念

绝大部分人错误地认为设计只关乎外观。人们只理解了表象——将这个盒子递给设计师,告诉他们:“把它变得好看一些!”这不是我们对设计的理解。设计并不仅仅是感观,设计也是产品的工作方式。[7]——乔布斯

对软件设计的误解,设计不能降低软件的开发成本,是软件开发额外付出的成本

设计是不可或缺的。除了优秀设计就是糟糕设计,根本不存在“不做设计”一说。

如果一个项目由五名开发人员参与,那么“不做设计”将会产生五种不同的设计。

有效设计可以满足商业组织希望借助软件超越竞争者的诉求。它可以驱动企业去思考哪些核心业务必须成为其竞争力,还可以指引构建正确软件模型的方向。

在DDD建模过程中,设计的核心

战略设计

  • 限界上下文与通用语言
  • 子域
  • 上下文映射图 战术设计
  • 聚合
  • 领域事件

建模过程的总体思路

建模过程与建模产出物(设计文档、代码)

建模过程总体原则

  • 从高度抽象到具体技术细节

  • 从业务框架设计到具体代码设计

战略设计

  1. 运用名为限界上下文 Bounded Context的战略设计模式来分离领域模型。
  2. 在明确的限界上下文中发展一套领域模型的通用语言 Ubiquitous Language,模型在限界上下文中实现。
  3. 在开始阶段,限界上下文是问题空间大一部分。当概念更加清晰时,限界上下文将被转移到解决方案空间。
  4. 发展核心域可以使你的组织在与其他组织的竞争中脱颖而出。至少,它标明了组织的业务主航道

战略设计

  • 划分子域
  • 制定战略
  • 集成上下文

包含模式:

战术设计

将若干实体和值对象以恰当的大小聚集在一起。这就是聚合(Aggregate)模式。

使用领域事件(Domain Events)既可以让你明确地建立模型,也可把模型内部发生的事情分享给需要知道这一切的系统。

战术设计的主要工作.png