鉴于这些功能要求:
用户管理
- 行政人员
- 图书管理员
- 借款人
*用户可以选择通过 OpenID 登录。
物业管理
- 书
- 备忘录
- 圆
- 执照
通常,我会在 Java 中将这些实现为:
interface User {}
class Librarian implements User {}
class Administrator implements User {}
class Borrower implements User {}
class OpenID {} //all Users HAS AN OpenID attribute (NULL if non-openId login)
interface Property{}
class Book implements Property{}
class Memorandum implements Property{}
class Circular implements Property{}
class License implements Property{}
但是我们的项目将使用 Groovy & Grails,我还没有使用过。我的问题是,应该如何根据上述要求设计领域类?我不能使用接口,而且似乎继承不是一个好习惯。我的想法是使用composition,尽管我对生成的数据库表感到非常困扰。在这种情况下,最佳做法是什么?