grails:一个字段,多个类

时间:2019-01-08 15:55:51

标签: grails

我想用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。 “机器”是指:电动机已部署在机器上,“修理”是指:电动机正在维修中。

因此,我想将location字段作为Motor内的字段,但是哪种类型?我知道,每次访问location时,我都必须评估lt

我在考虑特质中的一个领域。我会偏离轨道吗?还是那条路要走?

1 个答案:

答案 0 :(得分:1)

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

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

可能更好:创建一个Location基类(可以是抽象类),并从中扩展MachineRepaircompany。在Motor中,创建一个类型为Location的字段,然后可以使用任一子类填充该字段。

对于这两种解决方案,您可能都不再需要Locationtype。您可以确定是通过填充哪个字段(对于解决方案1)还是通过子类(对于解决方案2)来填充。