単純なユースケースのためのオブジェクト指向設計の基本的な演習を行っています。ブックには多くのタグを付けることができます。本とタグのオブジェクト指向の設計
私は多くの解決策がありますが、OODの原則とメンテナンスの面でより良い意見をお寄せください。 1
public class Book {
private String title;
//... other attributes
private List<Tag> tags;
}
オプションは私を悩ます事は、我々は、追加の分類や検索データをブックのコア属性を混入していることです。将来、特定の書籍にタグを付けることができないという要件があるかもしれません。私はより多くのresponsabilitiesを追加するときに将来的には、Bookクラスが肥大化することができますカテゴリ、それを読んでいるユーザーのリスト、評価...
オプション2
public class TaggedBook extends Book {
private Book book;
private List<Tag> tags;
}
は、私は、これはに似ていると思いますデコレータパターンですが、私は動作を拡張していないので、私はそれがここに収まるとは思わない。
comnpletelyオプション3
デカップリングブックやタグ、およびブック(各書籍は、一意の識別子を持っている与えられた)
List<Tag> TagService.getTags(Book book)
からタグを取得するためにサービスを使用しかし、私はしないでくださいこのソリューションは非常にエレガントです(それは?)、私は2つのクエリを送信しなければならないかもしれません.1つは書籍を取得するもの、もう1つはタグです。私は他の要件への最高のオプションを適用することを計画しています
:今格付けを持っているが、ブックは、私もブックとタグのオブジェクトを格納するために、DMSを使用して計画してい...
を分類することができます。リレーションシップデータベースではないため、そのスキーマはクラス設計に対応している可能性があります。
は、私はそれらを完全に分離するために、第三のオプションを好むあなたに
"タグ"はそれ自身のエンティティではないでしょうか?同様に、文字列だけではなく、説明やそのようなものを持つことができます。 – cHao
はい、ありがとう、これは私のオリジナルデザインでしたが、ちょっと質問に含めるのを忘れました –