域驱动设计聚合根设计
本文关键字: | 更新日期: 2023-09-27 18:37:08
嗨,我正在尝试在一个简单的类集群上做 DDD。
举个例子。
我有渠道和贷方。
通道 = 通道 A、通道 B贷方 = 银行 A、银行 B、银行 C
通道 A 有银行 A、B通道 B 有银行 B,C
在这种情况下,我将如何设计聚合根?
聚合 ID 应该是特定于银行的?还是应该是特定于渠道的?
在我的其他聚合中,我只想知道它是ChannelA-BankA还是ChannelB-BankC,也就是一个唯一的ID。
在我看来,我可以将通道作为聚合根实体,或者银行成为聚合根实体,这不会有什么区别吗? 他们是一对一的关系。
还是应该创建一个顶级类作为根并引用通道和银行?
有什么建议吗?
聚合设计总是很棘手,你越了解这个领域,它就会变得越容易。 局外人帮忙是相当困难(或不可能)的:)
但请记住,这不一定是"哪一个是聚合"的问题。 在您的情况下,很可能两者都是聚合,并且您通过值对象 (VO) 或 ID 链接它们。 例如,您可以使用ChannelLender
VO 进行Channel
,并且在您拥有 Channel
/Bank
链接的"其他"聚合中,您可以使用其他一些 VO,并且由于已使用ChannelLender
,您将需要来自您的无处不在的语言 (UL) 的一些名称来代表该概念。
希望能有一点帮助。