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

Namespace for (DDD) entities cutting across domains

我有几个与业务相关的域,例如 PurchaseMarketingEconomy。将模型安排到每个域的名称空间* 中会很好,但是有些实体跨域,例如 Item。如何组织那些横切对象?

* = 在 C#/Java/Python 命名空间中。

既然你有Bounded Context的概念,你就不应该在命名空间之间共享域。实际上,对于需要它的每个命名空间,您应该有一个项目,并且每个项目都应该根据包含的上下文的要求有自己的字段。

正如埃里克·埃文斯所说,复制数据并不是什么大不了的事情,因为从不在上下文之间共享相同的域,而只是数据。

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

您很可能需要一个 共享内核 用于 类 是横切的。您必须小心,不要通过在其中放置太多通用/逻辑 类 来滥用共享内核。

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

您还可以复制 一个 BC 中的 AR 作为另一个 VO 中的 VO。 CRM BC 中的 Customer 可能是客户的记录系统,因此包含更多信息。然而,在 Order BC 中,一个 Customer VO 可能只包含一个 IdName,也许还有 Address(例如).

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