DDD领域建模
2021-07-20 15:13:47 67 举报
AI智能生成
DDD领域建模方法论、步骤、工具
作者其他创作
大纲/内容
工具
UML类图
聚合的设计原则
1.在一致性边界内建模真正的不变条件
2.设计小聚合
3.通过唯一标识引用其他聚合
4.在边界之外,使用最终一致性
领域事件异步驱动,聚合之间数据最终一致性
5.通过应用层实现跨聚合的服务调用
用例分析法
六边形架构
概念
领域模型定义了关键的概念以及概念之间的关联关系
领域模型是重要的业务资产,沉淀了业务知识并且非常稳定(六边形架构)
聚合
根据事件风暴找出产生行为的业务实体对象,按照业务规则将依存度高业务联系紧密的多个实体对象和值对象进行聚类,形成聚合;
聚合与聚合之间应该用事件进行解耦,理论上聚合是可以单独拆分成一个微服务,不能与其他聚合耦合严重。
聚合是数据修改和持久化的基本单元,每一个聚合对应一个仓储,实现数据的持久化。
聚合与聚合之间应该用事件进行解耦,理论上聚合是可以单独拆分成一个微服务,不能与其他聚合耦合严重。
聚合是数据修改和持久化的基本单元,每一个聚合对应一个仓储,实现数据的持久化。
聚合根
拥有独立的生命周期。
一组具有相同生命周期,在业务上不可分隔的的实体和值对象放在一起,
只有根实体才能对外暴露引用,也是一种内聚性的表现。
如:如账号、客户信息、客户地址是一个聚合,账号是聚合根,
交易和流水是一个聚合,流水是通过交易产生的,交易是聚合根。
一组具有相同生命周期,在业务上不可分隔的的实体和值对象放在一起,
只有根实体才能对外暴露引用,也是一种内聚性的表现。
如:如账号、客户信息、客户地址是一个聚合,账号是聚合根,
交易和流水是一个聚合,流水是通过交易产生的,交易是聚合根。
边界上下文
定义:封装通用语言和领域对象,提供上下文环境,保证领域内的术语、业务相关对象是确切没有二义性。
一个子域可能包含多个限界上下文,也有可能子域本身就是限界上下文,每个领域模型都有它对应的限界上下文,
理论上限界上下文就是微服务的边界。
BoundedContext中保证模型在逻辑上统一,不同context间的通信要通过AC防腐层转化,
避免外部领域污染内部实体定义。
一个子域可能包含多个限界上下文,也有可能子域本身就是限界上下文,每个领域模型都有它对应的限界上下文,
理论上限界上下文就是微服务的边界。
BoundedContext中保证模型在逻辑上统一,不同context间的通信要通过AC防腐层转化,
避免外部领域污染内部实体定义。
领域服务
DomainService领域中的一些动作,看起来不属于任何对象,只是描述了一个重要的行为,
例如转账行为,没必要关联到账号实体。
例如转账行为,没必要关联到账号实体。
领域
领域是用来确定范围/边界的,即边界内要解决的业务问题域
子域
每个子域对应一个更小的问题域或更小的业务范围
子域按照自身重要性和功能属性划分为三类子域:核心域、通用域、支撑域
实体
实体和值对象是组成领域模型的基础单元,实体通常采用充血模型,有唯一id
值对象
通过对象属性值来识别的对象,它将多个相关属性组合成一个概念整体,并且没有标识符,【不可变】,如地址
方法论
建立统一语言:团队所有角色统一描述业务含义和规则的语言
整理需求用例
从用例到领域模型
领域模型转换为设计
划分边界
拆分子域
数据模型和类模型
事件风暴 -> 领域故事分析 -> 提取领域对象 -> 领域对象与代码模型映射 -> 代码落地
什么是领域模型
概念模型,是对现实世界概念类的描述,并非软件对象描述,领域模型不是数据模型
四色建模法
时间、人货场、角色、描述
CQRS
0 条评论
下一页