A
,AbstractElement
,,Y
およびZ
の集計を持っています。ルートエンティティはA
であり、リストもAbstractElement
です。エンティティX
,Y
およびZ
は、AbstractElement
から継承します。 X
、Y
、Z
のインスタンスをA
のインスタンスに追加する必要があります。 1つのアプローチは、タイプごとに1つの方法、すなわちaddX
,addY
およびaddZ
を使用することです。これらのメソッドは、引数として、X
,Y
およびZ
のインスタンスを作成するために必要な値をとります。しかし、AbstractElement
から継承する新しいタイプを追加するたびに、エンティティA
を変更する必要があります。そのため、これは最善の解決策ではないと思います。集団ルートと子エンティティのインスタンス作成
もう1つの方法は、の抽象的な追加メソッドを使用して、AbstractElement
のインスタンスを追加することです。しかし、この場合、このメソッドは引数として、AbstractElement
のインスタンスを取ります。このメソッドは、DDDルール/推奨に従って、集約の外にあるエンティティによって呼び出されるため、AbstractElement
のインスタンスを作成する権限を与えられた外部エンティティはありますか?私はEric Evansの本で、外部エンティティがルート以外の集約のエンティティの参照を保持する権限を持っていないことを読んでいますか?
この種の問題のベストプラクティスは何ですか?
おかげ
エヴァンの本、ページから
私の場合、詳細はエンティティごとに異なります。 Xのインスタンスを作成するには、1つの文字列が必要です。 Yのインスタンスを作成するには、2つの文字列が必要です...この場合、どのように動作しますか?方法は1つしか使用できません。 –
DDDでは、1つのメソッドしか作成できないため、FACTORYメソッドとして機能する限り、3つの異なるメソッドを作成できます。 – ItzikSaban
しかし、この場合、私の質問で提起した問題は依然として存在します。新しい型が追加されるたびに新しいファクトリメソッドを追加する必要があります。 –