CQRS UML DEMO

看看如图是否符合CQRS+DDD的设计规范:




[该贴被cloudstack于2012-12-23 14:36修改过]
这好像是三个聚合实体User Order Product并列。没有罗列出它们之间的关系,抑或没有关系,那么作为聚合根,肯定聚合了一些对象,比如Order下面还有一些实体和值对象等等,都没有看到。

给你一个DDD书中案例图:非常清楚标注了聚合边界,红线是我后加的,可以忽略:

你可以参考这个讨论:业务建模:辨析一个Order老问题,虽然我们没有画出,实际上在讨论聚合问题。

聚合反映业务核心领域,虽然最后的代码结果好像只是一个继承聚合,这只是表象,深层次包含了领域专家的深入分析的结果。

你这张图包含了领域事件这样太多细节,反而没有看到领域语言重要核心:做什么。从你这张图很难看出这是一个电子商务软件系统还是一个进销存系统,因为只有三个光光的聚合根,实际就是DDD的实体,聚合的意思包含很多对象聚合在一起,否则就没有必要用“聚合”这个词语了。

给你一套根据DDD书籍中Cargo案例编写的源码,虽然没有用领域事件等,但是非常能反映聚合的意思:
Cargo案例下载
[该贴被banq于2012-12-23 15:52修改过]

2012-12-23 15:22 "@banq"的内容
这好像是三个聚合实体User Order Product并列。没有罗列出它们之间的关系,抑或没有关系,那么作为聚合根,肯定聚合了一些对象,比如Order下面还有一些实体和值对象等等,都没有看到。 ...

关系是我没有画出,这个UML只是我为了体现CQRS的设计,根据其要求列出的几个类图,不是体现DDD的模型关系,如下所示,其中Department是否可以为AggregateRoot?



[该贴被cloudstack于2012-12-23 19:38修改过]