我想用Grails应用程序跟踪一台汽车。在某些情况下,电机的位置会发生变化,但位置类型也会发生变化。如何有效地存储当前位置?
第一次尝试是:
class Motor {
String motornumber
Locationtype lt
}
class Locationtype {
String type
}
class Machine {
String machinenumber
}
class Repaircompany {
String companyname
}根据作为{"Machine","Repair"}之一的Locationtype lt,电机对象应存储电机所在的机器id或维修公司id。“机器”是指:电机部署在机器上,“维修”是指:电机目前正在维修中。
所以我希望在Motor中有一个字段location作为字段,但是是哪种类型呢?我知道,每次我访问location时,我都必须评估lt。
我在考虑一个特征中的一个字段。我会偏离正轨吗?或者这就是我要走的路吗?
发布于 2019-01-09 01:13:39
这里有许多可能的解决方案,根据提供的有限信息,没有一个解决方案一定比另一个更好。两种可能的解决方案:
最简单的方法:向Motor对象添加一个可为空的Machine字段和一个可为空的Repaircompany字段。然后,可以填充(或者从技术上讲,两者都有),并且您可以根据需要使用这些值。
可能会更好:创建一个Location基类(可以是抽象的),并从中扩展Machine和Repaircompany。在Motor中,创建一个Location类型的字段,然后可以用任意一个子类填充该字段。
对于任何一种解决方案,您都可能不再需要Locationtype。您可以确定通过哪个字段填充(对于解决方案1)或通过子类(对于解决方案2)。
https://stackoverflow.com/questions/54095369
复制相似问题