具有聚合字段的域对象

时间:2016-03-11 20:47:58

标签: domain-driven-design repository-pattern business-logic business-rules

我有这样的域名对象:

new

产品团队告诉我:我们必须通过ID获取客户。客户拥有FirstName,LastName,DateOfBirth,Age和空白字段等信息。可以计算年龄和空白字段。 没有应用程序,只有API。谁使用这个API并不重要。

问:如果我遵循域驱动设计,域类客户看起来如何?我在哪里放置像Age这样的字段和空白字段列表(针对每个客户)?业务逻辑类的外观如何?

1 个答案:

答案 0 :(得分:0)

我认为你有一个贫血的模特在这里。年龄应完全在Customer类中实现。为了访问该值,您可以customer.age。空白字段可能是需要它自己的实体/域的概念,因为"客户"不能有" blankfield&#34 ;;这种语言不合适/有意义。如果您需要"空白字段"但是,作为客户对象的一部分存在,请考虑在客户对象中使用值对象。

您不需要服务完成您所做的一切。服务可能参与其中的唯一原因是,如果由于外部依赖或可能的复杂性,您无法让您的实体完成工作。

因此,您的服务会根据您的持久数据构建您的数据库,并且这会影响其结束。实际上,您可能应该使用存储库来重新构建对象(而不是服务)。