grails:一个字段,多个 类

grails: one field, multiple classes

我想使用 Grails 应用程序跟踪电机。在某些情况下,电机的位置会发生变化,但位置类型也会发生变化。如何有效地存储当前位置?

第一次尝试是:

class Motor {
    String motornumber
    Locationtype lt
}

class Locationtype {
    String type
}

class Machine {
    String machinenumber
}

class Repaircompany {
    String companyname
}

根据 Locationtype lt{"Machine","Repair"} 之一,电机对象应存储电机所在的机器 ID 或维修公司 ID。 "Machine"表示:Motor部署在机器上,"Repair"表示:Motor当前正在维修中。

所以我想要一个字段 location 作为 Motor 中的一个字段,但是是哪种类型?我知道,每次访问 location 时,我都必须评估 lt

我在考虑特征中的字段。我会偏离轨道还是那样做?

这里有很多可能的解决方案,根据所提供的有限信息,none必然比另一个更好。两种可能的解决方案:

最简单:向 Motor 对象添加一个可为空的 Machine 字段和一个可为空的 Repaircompany 字段。然后可以填充其中一个(或者从技术上讲两者),您可以根据需要从这些值中工作。

可能更好:创建一个 Location 基础 class(可以是抽象的)并从中扩展 MachineRepaircompany。在 Motor 中,创建一个 Location 类型的字段,然后可以用 subclass.

填充

对于任何一种解决方案,您可能都不再需要 Locationtype。您可以确定通过哪个字段填充(对于解决方案 1)或通过 subclass(对于解决方案 2)。