我正在为以下域设计而苦苦挣扎,据我了解,这些域设计似乎不符合 DDD 的概念。
一方面,我有 Device->Sensor->Measurement 层次结构,建模为聚合,以 Device 作为根,Sensor 作为实体,Measurement 作为 VO。到目前为止,一切都很好。
现在,每个设备都有一个类型,传感器也是如此。同时测量值是指被测量的变量(例如温度)。这是事情破裂的地方。
我最初将类型建模为值对象,但类型有限,许多设备和传感器共享相同的类型。
然后我决定将它们建模为一个聚合,遵循与设备聚合类似的结构:DeviceType->SensorType->Variable。但是,这不起作用,因为传感器可能会引用 SensorType 和 Measurement to Variable,从而打破了仅允许从另一个聚合内部引用聚合根的规则。此外,可能会发生不止一个 DeviceType 包含相同类型的传感器(例如电池电量传感器),并且不止一个 Sensor 测量相同的变量(例如电池电量水平)。
这导致我将每个实体(DeviceType、SensorType、Variable)作为独立的实体,每个实体都有自己的(退化的)。
我的具体问题是:我是否正确解释了聚合、实体、VO 的概念,或者只有根是反模式的这种贫血聚合?