Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
经典DDD + CQRS+ES 的一些疑问
14-08-05
linjie
以下是我关于经典
DDD
的简单理解:
在经典的DDD中,大量使用领域服务 Domain Service 和 Factory 来修改聚合根。
复杂的聚合根创建使用 Factory,将Factory 所需的参数全部传进去,Factory内部进行资源调配,包括逻辑验证,仓储 Repository 的调用等。 之后返回一个领域完整的聚合根对象。
而聚合根的修改,基本使用领域服务,不管是单个聚合根的修改,还是多个聚合根,都是一个领域服务内调用。
这其中关于聚合根自身的完整性验证,我基本都放在了聚合根内,一个聚合根必须保证自身的完整性和一致性。
领域服务就只起到协调作用。
而加入了
CQRS
,特别是Event Source ,聚合根之间的协调,基本都是通过
领域事件
(是否这么理解?),也就自基本弱化了领域服务。
而其中Factory的工作是否也可以交给领域事件去处理? Factory在原来的DDD中担任的任务是聚合根的创建,也可以理解为 专为创建聚合根的领域服务,在Factory 也同样是协调多个聚合根,为新的聚合根提供条件(如新订单的创建,需要用户聚合根,产品聚合根等)。而此时领域服务在领域事件中已经弱化,那么Factory是否也可以弱化或者取消?
而这弱化或取消所带来的问题,是创建聚合根所需的验证谁来负责处理?
求路过的大神指点迷津。
banq
2014-08-07 06:57
2014-08-05 16:09 "@linjie"的内容
而此时领域服务在
领域事件
中已经弱化,那么Factory是否也可以弱化或者取消? ...
首先要看看为什么领域服务在领域事件中已经弱化,聚合根的修改行为应该属于聚合根实体对象自己,用聚合根行为守护其内部状态的一致性是
DDD
设计核心,如果聚合根内部的状态直接暴露给外界(通过领域服务)任意修改,那么会导致状态变化混乱,难以调试和跟踪。参考:
http://www.jdon.com/45347
Factory是负责创建聚合根,这是无法弱化的,符合工厂自身定义。
DDD领域驱动设计
DDD聚合
DDD领域事件