これらの機能要件を考えると:
ユーザー管理
- 管理者
- 司書
- 借り手
*ユーザーは、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を使用することです。この状況でのベストプラクティスは何ですか?