模拟以下场景的最佳方法

时间:2011-10-17 13:31:07

标签: domain-driven-design

我是在DD世界中开始尝试构建一个足够简单的应用程序。关于如何选择模拟我的域名,我有几个问题。

我的应用程序允许用户订购贺卡。 用户可以在一个订单中订购任意数量的卡。 选择要订购的卡时,他们会浏览卡片目录。然而,卡目录不是本地存储的,而是从外部系统检索,但是他们在当前会话中浏览的每张卡都将在数据库中本地缓存,以便在该会话的生命周期中添加到订单中。

当他们在订单中添加卡片时,会进入新的订单行项目。那么必须为订单行项目,颜色,问候等指定一些其他细节......

我的问题是: 如何在我的域中对卡进行建模。我将Order作为聚合根,包含许多订单行项目。每个订单行项目都有一些属性和一张卡片。

但是我的卡片目录也会有一个卡片概念,它与我的订单行项目上的卡片具有相同的属性。

我是否正确地将这些卡建模为2个单独的实体(CatalogueCard和OrderCard),即使它们具有相同的属性集?

同样的问题也可以提出一张卡必须寄往的地址(每个订单行项目都有一个地址)和订单的帐单地址。这些应该被建模为完全独立的实体吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

当您为域建模时,您看到业务实体概念重复这一事实意味着您可能正在走上正轨。但是如果你有两个具有相同属性集的对象,你肯定应该使用一个。 CatalogueCard和OrderCard应该是实例名称,而不是类名,除非您期望进行某些更改,否则您可以从基类Card类继承。您的地址类也是如此。只需使用一个地址类。地址类型应该只是另一个属性,它可以是模型支持的地址类型的枚举值。