DDD |层次结构(相同类型)|约束

时间:2017-03-10 23:27:25

标签: domain-driven-design hierarchical-data hierarchical-clustering

我已经看了两个似乎相关的其他问题:

然而,它们与我的情况并不完全相同;也许错过了“约束”方面。

我的情况:我有一个名为“研究”的AR,可以按集群组织研究(借鉴调查领域的聚类抽样概念)。

假设这个“Study”在构造函数中使用此参数“clusteringDepth”(整数)。让我们说:我指定3(省,县,市)。

这只是一个规范。一项研究。当您实际进行研究时,您将根据研究创建一个StudyPlan实例。

因此,在这种情况下,我将有一个StudyPlan实例,它有一个省份列表(第一级集群)。每个省都有一个县(二级集群)列表,每个县都有城市列表(第三级/最终级集群)。

在每个群集上,您可以附加配额信息和日期范围(指定您必须在该群集中筹集多少次访谈,以及访谈的日期间隔)。显然,父集群必须维护不变量,例如“子集群的配额总和必须小于或等于此集群的配额”。

好的......,现在,约束:您可以计划与受访者面谈。为此,您将创建一个InterviewPlan实例。但是......,这个访谈计划只能附加到终端(第三级)集群。

当然,实现该约束很容易(例如:在集群的addInterviewPlan方法中,我会检查集群是否有父节点)。

但......,出于某种原因......我认为这不是一个好的DDD设计。这种限制听起来太技术性;它不会在正常的域名对话中自然而然地发生。

我的问题:我是否过度解释DDD“语言流动性/自然性要求”?或者......我错过了一个概念吗?我的意思是,我是否应该发明另一个域模型,这可能是一个集群的孩子并且有相关的面试计划?

谢谢, 拉嘎

其他相关:http://git.net/ml/programming.domain-driven-design/2006-06/msg00028.html

1 个答案:

答案 0 :(得分:0)

我不认为这太过于技术性。领域专家知道像sum这样的基本数学,在这种情况下,他们甚至可以创建那个tule。

Tehnical不变量意味着表,索引,列,行,ID,函数等技术。