DDD を使用して C# プロジェクトに取り組んでいます。私はいくつかのクラスを書きました。エンティティ カテゴリに分類されるものもあれば、値オブジェクト カテゴリに分類されるものもあります。私の質問は、エンティティと値オブジェクトの定義に忠実であるために、どのくらいの作業が必要ですか、または行う必要があるかです。
エンティティ :
- パブリック コンストラクターは禁止されています。ファクトリおよび/または静的メソッドを使用する必要があるため、オブジェクト (id を持つメモリ内) の一意性が保証されます。
- 演算子 ==、!= のオーバーロード、および Equals メソッドのオーバーライドであるため、比較はオブジェクト参照以外のものに基づいています。ID
値オブジェクト:
- パブリック コンストラクターが許可されています。ファクトリ、静的メソッドが許可されており、(オプションで)オブジェクトの一意性を保証するために(文字列のインターンなど)、何らかのキャッシングを実装できます。
- 演算子 ==、!= のオーバーロード、および Equals メソッドのオーバーライドであるため、比較は両方のオブジェクトのすべての値に基づいています。代わりに構造体を使用することもできます。
- 不変
これらは概念を強制するよりも可能性がありますが、それらは必須ですか? これらのファクトリ、静的メソッドの作成、これらすべてのメソッドのオーバーロードとオーバーライドは、DDD の概念を適用すると、大きな負荷または少量の作業のように見えるためです。
どこまで行けばいいですか?