ドメイン駆動型設計を手伝って、ドメインモデル内の集約ルートを特定する方法に関する状況に遭遇しました。ドメインモデルの集約ルーツを特定するにはどうすればよいですか?
私はシンプルなto-doリストをモデル化し、次の三つのクラス、持っている:
- UpdateはAのみのコンテキスト内に存在する:私はモデルについては、以下を述べることができる
public class List { private IList<Task> _tasks; public List() { ... } public string Name { get; set; } } public IEnumerable<Task> Tasks() { ... } public void AddTask(string descr) { ... } public void RemoveTask(Task t) { ... } public Task GetRandomTask() { ... } } public class Task { private IList<Update> _updates; public Task(string descr) { ... } public string Description { get; } public bool IsClosed { get; } public IEnumerable<Update> Updates() { ... } public void AddUpdate(string descr, bool close) { ... } } public class Update { public Update(string descr) { ... } public string Description { get; } }
を仕事。
- タスクは、リストのコンテキスト内にのみ存在します。
リストは、唯一の集約ルートのようです。 (実際、私のデータアクセス層では、Listオブジェクトの読み込み/保存のみが許可されています。)しかし、現在Taskクラスに存在するUIをListクラスにきれいにプッシュする方法はわかりません。現時点では、ListクラスはTaskオブジェクトへの参照を渡しており、呼び出し側がそれらを変更することができます。
これは、タスクが含まれているリストに依存している場合でも、タスクは集約ルートであることを意味しますか?
ありがとうございます。
関連する質問:[DDD:集約ルートの特定](http://programmers.stackexchange.com/questions/150196/)。 –