Dra*_*ake 1 java architecture entities domain-driven-design package
我阅读了一些关于 DDD 的出版物和主题。关于聚合和实体之间的联系,有很多声音。我明白聚合应该尽可能简单(每个聚合一个实体)。但是当聚合具有实体集合时呢?
比方说,我们有一个名为“Month”的聚合,它包含一组“Day”对象(它们是域实体,因为它们需要一个标识来区分——让聚合知道要修改哪个“Day”)。
所以我有两个问题:
谢谢大家的回答
将日期和月份建模为实体在很大程度上取决于上下文。这可能不是解释聚合和实体的最佳示例,但让我们尝试一下。
让我们假设在我们的上下文中,一天不能单独存在。它必须在一个月内。如果要引用一天,则必须先指定月份。这就是我们在现实生活中使用日期的方式,1 月 1 日,5 月 8 日……即使这些日子是实体,它们也不需要全局唯一标识符。他们只需要一个月内的标识符 [1 .. 31]。
聚合应该尽可能小,但是每个聚合应该只有一个实体并不是一条规则。您只需要拥有一个在所有系统中具有唯一标识符的聚合根(月)。在聚合中,您可以拥有在聚合中具有唯一标识符的实体(天)[1 .. 31]。如果要引用或访问这些实体,则应始终通过聚合根。