返回
领域驱动设计是⼀一种处理理⾼高度复杂域的设计思想, 试图通过分离技术实现的复杂性, 围绕业务概念构建 领域模型来控制业务的复杂性,以解决软件难以理理解, 难以演化等问题。
一个业务领域或子域是一个企业中的业务范围以及在其中进行的活动。一个业务领域和子域可以包括多个业务能力,一个业务能力对应⼀个服务:
主要指从高层“俯视”我们的软件系统,帮助我们精准地划分领域以及处理各个领域之间的关系。
重要概念
主要是指从技术实现的层面教会我们 如何具体地实施DDD
重要概念
模式 | 例子 |
---|---|
对于 | 消费者市场 |
是 | 网络商场式的购买平台 |
它可以 | 买货、退货、发布商品、电子支付 |
而不像 | 实体店 |
这个产品 | 随时随地安全的购物 |
使⽤用事件⻛风暴暴梳理理业务流程,建⽴立领域模型,划分边界
一个领域事件必须对业务有价值,有助于形成完整的闭环,一个领域事件将导致进一步的业务操作
捕获所建模领域中发生的事情
设计业务场景(根据产品愿景与价值定位,设计关 键场景,找出起点与终点)
活动介绍,以下3步
找出领域事件
事件顺序
事件排序
产⽣生事件的领域⾏行行为或领域活动,命令可以是
活动介绍
识别业务含义名词、相同名词合并
通过分析前⼀一步产⽣生的领域事件寻找领域模型
聚合是一组相关领域模型的集合,是用来封装业务的不变性。通过定义对象之间清晰的所属关系和边界确保关联关系紧密的领域模型能够内聚在一起。 从⽽避免错综复杂的对象关系⽹的形成,确保业务规则在领域对象的各个生命周期都得以执行:
活动介绍
目的:
活动介绍
是一类对象,它拥有全局唯一标识符,且标识符在历经软件系统的各种状态、 生命周期后仍能保持一致。我们把这样的 对象称为实体 。
我们对某个对象是什么不感兴趣,只关心它拥有的属性。用来描述领域的特 殊方面、且没有唯一标识符的对象叫做值 对象。
利用领域驱动设计的战略设计⽅法,划分边界
限界上下文可以分为限界和上下文两个词来理解
限界:指一个界限,具体的某一个范围
上下⽂文:场景、环境
所以限界上下文是在某个场景或环境下的业务边界。该边界就是业务上的职责
消除歧义的最好办 法就是在上下文图中,将领域模型分拆在 多个界限上下文中
利用领域驱动设计的战略设计方法,划分边界
通过定义不同上下文之间的关系,创建的一个所有模型上下文的全局视图
graph LR
A[程序员] --> |最重要的素质| B[学习能力]
C[程序] --> |易改| D[完成功能]
C[程序] --> |易改| F[可维护]
把人类语言(需求)转化成猿类语言(电脑懂的语言)
graph LR
A[软件开发] --> |本质| B[学习]
graph LR
A{战略}
A --> F[大]
A --> G[方向]
B{战术}
B --> D[小]
B --> E[实施]