2016-06-02 6 views
0

これはかなり基本的な疑問です。ジョブだけがストアコレクションであるクラスは良い考えですか?

私はHead First Design PatternsEffective Javaを読んでいましたが、私は何ができ、何ができないのか(SOLID、デザインパターンともの)で少し傷つきました。悲しいことに、私はまだコレクションを含む問題の解決法を設計する方法を見つけることができません。

だから私は、この例があります:

public class Test { 
public static void main (String...args){ 
    Content format = ContentFactory.newFormat("Movie",3); 
    Content genre = ContentFactory.newGenre("Action",3); 
    Content content = ContentFactory.newContent(format,genre); //Action Movie 
} 

}

コンテキスト:この例では、私は、これらのオブジェクトの多くを保存する必要があるので、私は3異なるコレクションを必要としています。だから、私はすべての "フォーマットタイプ"のオブジェクトを例として繰り返すことができます。

問題:これを行うには最適なものは何ですか?

明白な解決策は、3つの異なるコレクションを作成し、必要な処理を行います。

私の質問:それは良い考えですか?つまり、コレクションを3つしか持たないクラスを用意し、それを処理するための基本的な操作を提供しますか?私はパターンを強制したくない...しかし、私は何かが欠けていると感じ、最初の解決策は悪いです。この "設計問題"を解決する最良のアプローチは何ですか?

たぶん私はこの問題をかなり誇張しているだけかもしれません...しかし、私の学習プロセスの一部です。最も単純なものでさえ正しい。

+0

本当にあなたを最初からデザインに移行させるには、ロバートマーティンの "アジャイルの原則"があります。お気に入りの検索エンジンを使用して、無料の「C#バージョン」をPDFで見つけることができます。あなたはjavaバージョンを購入する必要はありません。 – GhostCat

答えて

0

ベストソリューションはありません。 物事を保存する方法を考える前に、物事をモデル化する方法を考える必要があります。その答えは、あなたが自分のもの(要件)と何をしなければならないかによって決まります。あなたたとえば は、このモデルを持っている方が良いかもしれない:フォーマットへの参照および格納するためにどのよう

をジャンルにREFと

  • クラスフォーマット
  • クラスジャンル
  • クラスの内容、データ?どのように使用するかによって異なります。たとえば、書式とジャンルは、キーとして説明を使用してマップに格納することも、重複を避けるためにセットに格納することもできます。コンテンツは、より高速な検索を可能にするために、より複雑な構造に格納することができます。

    実際の問題は「どの問題を解決するのですか?」です。それでは、答えが出たら、あなたにとって重要なことを気にするあなたの状況のた​​めの最良の方法であると考えることを始めてください(読みやすさ、コーディングの速さ、メンテナンス性)。

    デザインの原則と設計方法について読んでから、適切なものを選んでください。それから、あなたが変更したいとき...変更!銀の弾丸の方法はなく、私たちの周りのものは常に変化します。