Domain driven design 在没有实体的情况下,相当于聚合
我有几个聚合:存款、取款等。现在有一个VO称为分类账,它还有其他相关VO。分类账标记了存款和取款的交易,这两种交易都会发生。在这种情况下,它似乎类似于创建一个单独的聚合(创建一个文件夹并将分类账和相关类型放入其中)。但DDD不允许这样做,因为聚合根只能是实体 可能的解决办法是什么?在DDD边界内,我如何分类和放置分类账和相关VO 更新: 分类账就像一条记录,是每项操作的一笔交易。例如,当存款完成时,交易已经发生等,因此它没有状态,只保存一次,不再修改。它是为了保存记录而保存的 存款和取款都有状态和生存期,它们的状态将从挂起更改为确认,或从挂起更改为取消。因此,它们不可能是服务 如果需要更多信息,请告诉我Domain driven design 在没有实体的情况下,相当于聚合,domain-driven-design,Domain Driven Design,我有几个聚合:存款、取款等。现在有一个VO称为分类账,它还有其他相关VO。分类账标记了存款和取款的交易,这两种交易都会发生。在这种情况下,它似乎类似于创建一个单独的聚合(创建一个文件夹并将分类账和相关类型放入其中)。但DDD不允许这样做,因为聚合根只能是实体 可能的解决办法是什么?在DDD边界内,我如何分类和放置分类账和相关VO 更新: 分类账就像一条记录,是每项操作的一笔交易。例如,当存款完成时,交易已经发生等,因此它没有状态,只保存一次,不再修改。它是为了保存记录而保存的 存款和取款都有状态
提前感谢。首先,想想账本中的其他VO。在这些VO中有没有你以前没有考虑过的隐藏身份?在这种情况下,这将是(根)实体,您将拥有您的聚合
如果不是这样,你可以考虑分类帐是否是一个VO,它是根实体在操作中的集合的一部分,操作是一个具有唯一身份的实体,撤回和存放将是它的专门化。p> 从您的更新中,听起来您可能有一个轻微的术语问题和缺少的实体
您可能需要将分类帐
值对象重命名为分类帐
或分类帐
您缺少的实体可能是一个分类账
(分类账就像一本书,一个记录或条目的容器)。这将有一组账本记录
因此,您可能会调用
Ledger.MakeEntry(text)
,或者调用LedgerService.GetLedgerSectionByDateRange(from,to)
,这将返回一个Ledger
,其中填充了该日期范围内的LedgerRecords
,等等。这很奇怪,但draw
听起来像是一个动作,不是一个实体,分类账
听起来像是一个实体。您可能需要发布更多信息和代码示例。请查看更新的问题。