Aggreate Root,Aggregates,Entities,Value Objects

时间:2015-07-17 19:45:25

标签: domain-driven-design aggregateroot

在查看上面标题中提到的术语时,我正在努力解决一些实现细节。

有人可以告诉我,我的解释是否正确吗?

作为参考,我看一下CRM域

作为 AggregateRoot ,我可以看到客户

实体可能包含街道,邮政编码等地址

现在有类似联系活动的内容,这至少应该是聚合。对?现在,如果联系人和活动具有复杂的业务逻辑。例如,“每次创建类型订单的联系人时,都应该启动订单工作流程”

那么Contact需要是一个聚合根吗?可能由此产生的实施影响是什么?

在查看和事件采购时,每个聚合都会有自己的流吗?在这种情况下,客户可以进行数千项活动。

如果有人可以指导我的理解是正确的,哪些部分与我的共同解释不同,那就太棒了。

1 个答案:

答案 0 :(得分:2)

“至少聚合”是什么意思?

聚合是一组一个或多个连接的实体。聚合只能从其根实体访问,也称为聚合根。聚合定义了必须始终保留的实体的事务边界。 Jimmy Bogard对聚合here有很好的解释。

使用事件源时,每个聚合都应该有自己的流。该流用于构造聚合,没有理由让几个聚合使用相同的流。

您应该尝试保持小的聚合。如果您希望您的客户对象有数千个活动,那么您应该查看是否可以将活动设计为单独的聚合,只要其边界确保您不会使系统处于无效状态。