エンティティの設定の詳細を処理する方法に関するグループの考えを得たいだけでした。DDDのアプリレベルの設定は?
私が特に考えているのは、管理者に変更される可能性のある高レベルの設定です。最終的にはappやweb.configに格納することができますが、DDDの観点からは、オブジェクトのどこかに明示的に設定する必要があります。
議論のために、WebベースのCMSまたはブログアプリを例にしましょう。
与えられたブログエントリの実体がなど著者のようなインスタンスの設定の任意の数、コンテンツ、
を持っているしかし、あなたはまた、サイト内のすべてのエントリで始まる必要があります(例えば)デフォルトの説明やキーワードを設定することをお勧めします彼らが著者によって変更されていない場合。確かに、あなたはクラスの定数を作ることができますが、サイトの所有者はデフォルトを変更できませんでした。
次のように私の考えは次のとおりです。
1)これらの設定を表すために、クラスレベル(静的)プロパティを使用して、アプリの起動時にそれらを設定し、いずれかのDBから、またはWebからそれらを設定します.config。
または
2)は、それを直接使用するか、それが最も簡単として、あなたのすべてを打つ何のエントリークラス
のメンバーである必要がありいずれかで、おそらく、辞書を設定を保持するための別のエンティティを使用します/フレキシブル?エンティティのクラスメソッドを変更すると、アプリケーション自体も変更されるため、プラグイン可能(非常に多くの機能を追加したい場合)になることはないということです(OCP違反)。 2番目の方は、より重いように感じます。特に、辞書から値をキャストまたは解析する必要がある場合は特にそうです。
デフォルト値は例であり、おそらくは貧弱な値でした。私はFactoryパターンに精通しています。 もう1つの例は、クラスのすべてのインスタンスに適用する必要がありますが、アプリレベルで変更できるものです。おそらく、リストにロードするインスタンスの数(常に)やコメントを表示するかどうかのルールのようなものです。これらは実際にインスタンスレベルの値として私を攻撃しないか、何かを誤解していますか? – Paul
常に1つ以上の関連する値を型にカプセル化し、その型のインスタンスをすべてのコンシューマに注入できます。効率的な理由(またはその他の理由)を理由に、単一の共有インスタンスを注入することを選択できますが、消費者は注入されたオブジェクトの存続期間について知らないことがあります。それはあなたのオプションを開いたままにします。 –