rob*_*rob 5 c# domain-driven-design aggregateroot
考虑到域驱动设计,我遇到了如何在我的域模型中识别聚合根的情况.
我有以下三个类,为一个简单的待办事项列表建模:
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; }
}
Run Code Online (Sandbox Code Playgroud)
关于模型,我可以说明以下内容:
因此,列表似乎是唯一的聚合根.(事实上,我的数据访问层只允许加载/保存List对象.)但是我无法看到如何干净地将当前存在于Task类中的UI推送到List类.目前我的List类正在分发对Task对象的引用,允许调用者修改它们.
这是否意味着Task也是一个聚合根,即使它的存在依赖于包含List?
提前致谢.
小智 1
我认为在这种情况下你可以有 1 或 2 个聚合。这完全取决于您在列表中的任务是否大;以及你的更新会不会很大。
如果任务或更新不会增长很多,那么一个聚合root(List)就可以了。
否则,您可以将它们分成两个聚合root(List, Task),其中Listcan addTask和Taskcan add Update。
| 归档时间: |
|
| 查看次数: |
2125 次 |
| 最近记录: |