0
練習として、DDDを使用して.NETで簡単なブログアプリを作成しようとしています。これまでのところ私はUser、Topic、Commentクラスを持っています。しかし、問題は、ユーザーとトピックのコメントをリンクする方法ですか?私がUserとTopicが集約の根であると言うと、Commentはどこに属していますか?DDD - 非常に単純なブログモデルの根を集約する
練習として、DDDを使用して.NETで簡単なブログアプリを作成しようとしています。これまでのところ私はUser、Topic、Commentクラスを持っています。しかし、問題は、ユーザーとトピックのコメントをリンクする方法ですか?私がUserとTopicが集約の根であると言うと、Commentはどこに属していますか?DDD - 非常に単純なブログモデルの根を集約する
集約は、他の集約ルートとの関連付けを持つ場合があります。
コメントはトピックとユーザーの両方に関連付けることができます。 どうにか私はそれをとにかくモデル化するでしょう、集約根は一貫性の境界です。 トピックは、そのコメントとどのような形でも一致する必要はないため、コメントはその集約の一部である必要はありません。 ユーザーはすべてのコメントと一貫性がある必要はないので、ユーザーはコメントについても知る必要はありません。
私は、コメントリポジトリによって特定のトピックのコメントを取得します。例:
var comments = commentRepo.FindCommentsForTopic(someTopic);
//or by topic id for pragmatic reasons.
DDDの理論に従えば、その質問は決して存在しません。最初に、可能なシナリオをブレーンストーミングして描画し、次にコードを作成します。例えば、トピックはそのシリーズの最初のコメントと考えることができるので、トピックに含まれるエクストラ(タイトル、タグなど)以外の大きな違いはありません – yoda
まあ、私はDDDの完全なnoobです一般的なソフトウェアアーキテクチャ。しかし、私が聞いたことから、一般化を避けるべきです。つまり、ユーザーがトピックとコメントとを別のものと考えると、それをコメントとしてモデル化すべきではありません。 私のモデルを今すぐブレーンストーミングしようとしています... –