0

我正在为以下域设计而苦苦挣扎,据我了解,这些域设计似乎不符合 DDD 的概念。

一方面,我有 Device->Sensor->Measurement 层次结构,建模为聚合,以 Device 作为根,Sensor 作为实体,Measurement 作为 VO。到目前为止,一切都很好。

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

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

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

这导致我将每个实体(DeviceType、SensorType、Variable)作为独立的实体,每个实体都有自己的(退化的)。

我的具体问题是:我是否正确解释了聚合、实体、VO 的概念,或者只有根是反模式的这种贫血聚合?

4

1 回答 1

0

建模没有硬性规定,你应该做最适合你用例的事情。话虽如此,聚合主要用于维护一组实体的不变量。我在 DeviceType、SensorType 和 Variable 之间看不到任何此类约束,因此我看不出有任何理由将它们放入聚合中。将它们保持为独立的实体(甚至是值对象)应该没问题。

于 2012-07-31T05:13:11.837 回答