我希望有人可以帮助我决定对这个设计进行建模的最佳方法,听起来应该是一个简单的用例。
我有一个Client
域类。我有一个Person
命令对象和一个Firm
命令对象,它代表一个公司或一个组织。
我也有子类,为了命名,我们可以为ClientSubClass1
和ClientSubClass2
调用它们,它们都扩展为Client
。
我感到困惑的是,客户应该能够成为一个人或一个公司。
因此,我觉得最好的方法是使用嵌入并将Firm类和Person类嵌入到Client类中,并添加一个标志,指示客户端是个人还是公司。 否则,我无法看到如何使用继承来实现我的需要。
非常感谢任何想法,谢谢。
答案 0 :(得分:0)
在Grails中,您可以在域类中使用继承,GORM将为您创建和管理数据库中的标志,而无需显式声明。我将创建从Client继承的Person和Firm域类。
命令类主要用于绑定控制器操作请求中的参数,这与数据的存储和检索方式有些无关。
答案 1 :(得分:0)
好吧,回答这个问题并将其打包,我决定创建一个更高级别的Contact域类,它有一个Person和Organization子类(tableperHierarchy false)。
客户端扩展了Person并包含一个嵌入式组织,以及一个标志,用于指示在引用该客户端时是否应该使用Person详细信息或组织详细信息,例如当我想显示客户端的名称时,我知道是否使用嵌入式组织的个人姓名(名称,姓名,姓名缩写,姓氏)或公司名称。
在Contact类定义中,我还使用了一个嵌入的Address类,保存在'src / groovy'中,因此它不会创建自己的表。
所以我有一个很好的组合和继承的混合。