0

我希望有人可以帮助我决定为这个设计建模的最佳方法,因为听起来应该是一个简单的用例。

我有一个Client域类。我有一个Person命令对象和一个Firm代表公司或组织的命令对象。

我也有子类,为了命名,我们称它们ClientSubClass1ClientSubClass2扩展Client.

我感到困惑的是,客户应该既可以是个人,也可以是公司。

所以我认为最好的方法是使用嵌入并将 Firm 类和 Person 类嵌入到 Client 类中,并添加一个标志来指示客户是个人还是公司。否则我看不到如何使用继承来完成我所需要的。

任何想法将不胜感激,谢谢。

4

2 回答 2

0

在 Grails 中,您可以在域类中使用继承,而 GORM 将在数据库中为您创建和管理一个标志,而无需您显式声明一个标志。我将创建从 Client 继承的 Person 和 Firm 域类。

命令类主要用于将请求中的参数绑定到控制器操作,这与数据的存储和检索方式有些无关。

于 2012-08-05T04:53:11.230 回答
0

好吧,只是为了回答这个问题并总结一下,我决定创建一个更高级别的 Contact 域类,它有一个 Person 和 Organization 子类(tableperHierarchy false)。

客户端扩展了 Person 并包含一个嵌入式组织,以及一个标志,用于指示在引用该客户端时我应该使用个人详细信息还是组织详细信息,例如当我想显示客户端名称时,我知道是否使用来自嵌入式组织的个人姓名(头衔、名字、首字母、姓氏)或公司名称。

在 Contact 类定义中,我还使用了一个嵌入的 Address 类,它保存在 'src/groovy' 中,因此它不会创建自己的表。

所以我混合了组合和继承,效果很好。

于 2012-08-17T17:26:13.497 回答