内容正在准备中
参考资料
- https://c4model.com/
- https://github.com/ddd-crew/welcome-to-ddd
概念
绝大部分人错误地认为设计只关乎外观。人们只理解了表象——将这个盒子递给设计师,告诉他们:“把它变得好看一些!”这不是我们对设计的理解。设计并不仅仅是感观,设计也是产品的工作方式。[7]——乔布斯
对软件设计的误解,设计不能降低软件的开发成本,是软件开发额外付出的成本
设计是不可或缺的。除了优秀设计就是糟糕设计,根本不存在“不做设计”一说。
如果一个项目由五名开发人员参与,那么“不做设计”将会产生五种不同的设计。
有效设计可以满足商业组织希望借助软件超越竞争者的诉求。它可以驱动企业去思考哪些核心业务必须成为其竞争力,还可以指引构建正确软件模型的方向。
在DDD建模过程中,设计的核心
战略设计
- 限界上下文与通用语言
- 子域
- 上下文映射图 战术设计
- 聚合
- 领域事件
建模过程的总体思路
建模过程与建模产出物(设计文档、代码)
建模过程总体原则
-
从高度抽象到具体技术细节
-
从业务框架设计到具体代码设计
战略设计
- 运用名为限界上下文 Bounded Context的战略设计模式来分离领域模型。
- 在明确的限界上下文中发展一套领域模型的通用语言 Ubiquitous Language,模型在限界上下文中实现。
- 在开始阶段,限界上下文是问题空间大一部分。当概念更加清晰时,限界上下文将被转移到解决方案空间。
- 发展核心域可以使你的组织在与其他组织的竞争中脱颖而出。至少,它标明了组织的业务主航道
战略设计
- 划分子域
- 制定战略
- 集成上下文
包含模式:
- 限界上下文 Bounded Context
- 通用语言
- 子域:核心域、支撑子域、通用子域
- 上下文映射
战术设计
将若干实体和值对象以恰当的大小聚集在一起。这就是聚合(Aggregate)模式。
使用领域事件(Domain Events)既可以让你明确地建立模型,也可把模型内部发生的事情分享给需要知道这一切的系统。
