跨越域的(DDD)实体的命名空间

时间:2015-06-22 11:03:38

标签: namespaces domain-driven-design modeling

我有几个与业务相关的域名,例如PurchaseMarketingEconomy。将模型排列到每个域的命名空间*会很好,但是有一些实体跨越域,如Item。如何组织这些交叉对象?

* =与C#/ Java / Python命名空间一样。

2 个答案:

答案 0 :(得分:3)

由于您具有Bounded Context的概念,因此不应在命名空间之间共享域。实际上,对于需要它的每个命名空间,您应该有一个Item,并且每个Item应该包含它所包含的上下文所需的自己的字段。

正如埃里克·埃文斯所说,为了永远不在上下文之间共享同一个域,而只是数据,重复数据并不是一件大事。

答案 1 :(得分:2)

确定您是否拥有正确的设计需要一些域名使用经验,因此您应该咨询您的域名专家。

对于跨领域的类,您可能需要共享内核。你必须要小心,不要滥用共享内核,因为那里放置了太多的泛型/逻辑类。

要添加@ rafaels88已回答的内容,您可能需要创建一个存在某个逻辑实体的BC特定域构造。例如,身份&中的User访问控制 BC在一个BC中为Author,但在另一个BC中可能为Supervisor

您还可以在一个BC中复制一个AR作为另一个BC中的VO。 CRM BC中的Customer可能是客户的记录系统,因此包含更多信息。但是,在订单 BC中,Customer VO可能只包含IdNameAddress(例如)。< / p>

因此,您需要在决定放置它的位置之前评估您拥有的对象类型。