データ フィールドとビジネス ロジックの両方を含む豊富なドメイン モデルを使用して、アプリケーションにドメイン駆動設計の原則を適用しようとしています。私は多くの DDD の本を読みましたが、それらのドメイン モデル (エンティティと呼ばれる) は非常に単純なようです。以下のような 10 ~ 15 個のデータ フィールドを持つドメイン モデルがある場合に問題になります。
class Job extends DomainModel{
protected int id;
protected User employer;
protected string position;
protected string industry;
protected string requirements;
protected string responsibilities;
protected string benefits;
protected int vacancy;
protected Money salary;
protected DateTime datePosted;
protected DateTime dateStarting;
protected Interval duration;
protected String status;
protected float rating;
//business logic below
}
ご覧のとおり、このドメイン モデルには多くのデータ フィールドが含まれており、それらはすべて重要であり、取り除くことはできません。優れたリッチ ドメイン モデルにはセッター メソッドを含めるべきではなく、そのデータをコンストラクターに渡し、ビジネス ロジックを使用して状態を変更する必要があることを私は知っています。ただし、上記のドメイン モデルの場合、コンストラクター メソッドで 15 以上のパラメーターが発生するため、すべてをコンストラクターに渡すことはできません。メソッドには 6 ~ 7 個を超えるパラメーターを含めるべきではありません。
では、大量のデータ フィールドを持つドメイン モデルを処理するにはどうすればよいでしょうか? 分解してみるかな。もしそうなら、どのように?あるいは、ビルダー クラスまたはリフレクションを使用して、インスタンス化時にそのプロパティを初期化し、コンストラクターを多くの引数で汚染しないようにする必要がありますか? 誰でもアドバイスできますか?ありがとう。