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