grails:一个字段,多个类
我想用Grails应用程序跟踪一个马达。有时,电机的位置会发生变化,但位置类型也会发生变化。如何有效地存储当前位置 第一次尝试是:grails:一个字段,多个类,grails,Grails,我想用Grails应用程序跟踪一个马达。有时,电机的位置会发生变化,但位置类型也会发生变化。如何有效地存储当前位置 第一次尝试是: class Motor { String motornumber Locationtype lt } class Locationtype { String type } class Machine { String machinenumber } class Repaircompany { String company
class Motor {
String motornumber
Locationtype lt
}
class Locationtype {
String type
}
class Machine {
String machinenumber
}
class Repaircompany {
String companyname
}
根据Locationtype lt
(属于{“机器”、“维修”}
之一),电机对象应存储电机所在的机器id或维修公司id。“机器”是指:电机部署在机器上,“维修”是指:电机当前正在维修
所以我想要一个位置
字段作为电机
中的字段,但是是哪种类型?我知道,每次访问位置
,我都必须评估lt
我在想一个特征里面的一个领域。我会偏离正轨吗?还是这样 这里有许多可能的解决方案,根据提供的有限信息,没有一个比另一个更好。两种可能的解决办法: 最简单:将可为空的
机器
字段和可为空的修理公司
字段添加到电机
对象。然后可以填充其中一个(或者从技术上两者都可以),您可以根据需要使用这些值
可能更好:创建一个Location
基类(可以是抽象的),并从中扩展Machine
和Repaircompany
。在Motor
中,创建一个类型为Location
的字段,然后可以用任一子类填充该字段
对于这两种解决方案,您可能不再需要
Locationtype
。您可以确定通过哪个字段填充(对于解决方案1)或通过子类填充(对于解决方案2)。谢谢,@Daniel,谢谢您的回答。纯粹主义者的路线是创建抽象类,但我认为使用可空字段的解决方案将是我将尝试的,因为这在UI方面更容易处理:在视图中,借助一些JavaScript/jQuery,我可以轻松地选择要显示的下拉列表,根据显示字段的下拉列表的状态Locationtype lt
。实现后,lt==“Machine”
意味着:Machine下拉列表字段可见,Repaircompany下拉列表不可见,等等。。。好的,现在我有了清晰的视野,再次感谢!仅仅是另一个反馈——因为愿景是如此清晰,我毫不费力地写下概念,然后实施解决方案。我甚至发现了“可调零场解决方案”的另一个优势,即当机器和维修公司的场均为空时,将电动机解释为垃圾。我正在考虑删除Locationtype lt
,因为它有点多余,因为字段之间的null模式就是信息本身:两个字段都已填充:无效,一个字段已填充:有效,两个字段均为null:valid&垃圾。这周过得很好,再次感谢你。