对两个并行聚合、实体和值对象层次结构进行建模



我正在努力进行以下领域设计,这些设计不符合我所理解的DDD概念。

一方面,我有Device->Sensor->Measurement层次结构,建模为一个Aggregate,Device作为根,Sensor作为实体,Measurement作为VO。到目前为止还不错。

现在,每个设备都有一种类型,传感器也是如此。同时,测量是指测量的变量(例如温度)。这就是事情破裂的地方。

我最初将类型建模为值对象,但类型集有限,许多设备和传感器共享相同的类型。

然后,我决定将它们建模为一个聚合,遵循与设备聚合类似的结构:DeviceType->SensorType->Variable。然而,这不起作用,因为传感器可能会引用SensorType和Measurement to Variable,打破了只允许从另一个聚合内部引用聚合根的规则。此外,可能发生不止一个DeviceType包括相同类型的传感器(例如,电池充电传感器),并且不止一个传感器测量相同的变量(例如电池充电水平)。

这让我把这些实体(DeviceType、SensorType、Variable)中的每一个都作为独立的实体,每个都有自己的(退化的)。

我的具体问题是:我是否正确地解释了Aggregate、Entity、VO的概念,或者将这种只有根的贫血的Aggregate视为反模式?

建模中没有硬性规则,您应该做最适合您的用例的事情。也就是说,聚合主要用于维护一组实体之间的不变量。我看不到DeviceType、SensorType和Variable之间有任何这样的约束,因此我看不出有任何理由将它们放入聚合中。将它们保留为独立的实体(甚至值对象)应该是可以的。

相关内容

  • 没有找到相关文章

最新更新