5
在域驅動的設計中,我遇到了關於如何識別我的域模型中的聚合根的情況。如何識別域模型中的聚合根?
我有以下三個類,造型簡單的待辦事項列表:
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上的UI推送到List類。此刻,我的List類將派發對任務對象的引用,允許調用者修改它們。
這是否意味着Task也是一個聚合根,即使它的存在依賴於一個包含List?
在此先感謝。
相關問題:[DDD:Identifying aggregate root](http://programmers.stackexchange.com/questions/150196/)。 – 2016-08-03 00:12:43