図に示すように、比較的単純なドメイン モデルがあります。DDD で定義されているように、ドメイン オブジェクト内でこのロジックを維持したいと考えています。
各ドメイン オブジェクトは、それぞれのメンバーとドメイン ロジックのみを含む抽象クラスです。これらのクラスの具体的な実装は、(DI を使用して) サービスに提供されるリポジトリによって返されます。
私が問題を抱えているのは、新しいエンティティを作成する必要がある状況に対処する方法を理解することです. たとえば、ドメイン ロジックは次のように指示します。
アカウントを に追加できます(エンティティのGroup
作成)。Member
アカウントがグループに追加されるとき、新しい
Member
エンティティのValue
プロパティは、 に既に存在するメンバーの総数に設定する必要がありますGroup
。グループの他のすべてのメンバーは、値を 1 ずつ増やす必要があります。
Member AddMember(Account account)
これを のメソッドとして実装できますGroup
。ただし、このメソッドは何らかの方法で新しいインスタンスMember
を作成して、グループのメンバー コレクションに追加する必要があります。
ドメイン オブジェクトにはアプリケーション内のさらに上位のレイヤーへの参照がなく、ドメイン オブジェクト自体が抽象的であるため、Member の新しいインスタンスを構築する方法がわかりません。
具体的な実装で実装できるオブジェクトのabstract protected Member CreateMember()
メソッドを定義する可能性を検討しましたが、これは面倒に思えて、もっと基本的なことを誤解している可能性があるのではないかと懸念しています。Group
DDD の原則に忠実であり続けるために、このモデルをどのように実装すればよいでしょうか?