DDD中是否有关于共享值对象的任何概念

时间:2014-07-03 07:21:30

标签: asp.net domain-driven-design aggregateroot ddd-service

我需要知道如何在DDD Eg中使用共享值对象?

如果我有两个名为注册和许可的聚合根,,这两个聚合都使用名为Address的值对象。即使我无处不在的语言不同(许可地址和注册地址),这个地址对象的模型是相同的(我的意思是它有共同的属性)。所以我决定将这个值对象从这个聚合根移动到我的上下文中的公共位置(Say SharedValuess)。我想知道这种做法很好,或者有任何成熟的方法可以处理这种情况。

注意:这篇文章可能违反Stack溢出规则,因为它的答案是基于意见的,但我没有找到任何其他活跃的论坛来提出这个问题。

2 个答案:

答案 0 :(得分:2)

有一种名为"共享内核"的模式。它有助于避免代码重复,并且通常用于有界上下文集成。但我建议尽量少保持它,以避免从有限的上下文中泄漏逻辑。 我认为在你的情况下,保持共享是正确的决定,除非你需要在每个有界上下文的地址模型中有一些差异。

答案 1 :(得分:-1)

您遇到这种困境可能表明模型(UL)存在问题。我会考虑在两个聚合根中的一个中维护地址,并从另一个聚合根引用这个聚合根'by identity'。

Aggregates in Domain Driven Design