gpt4 book ai didi

c# - 如何识别域模型中的聚合根?

转载 作者:太空狗 更新时间:2023-10-29 23:47:35 25 4
gpt4 key购买 nike

在涉足领域驱动设计时,我遇到了如何在我的领域模型中识别聚合根的情况。

我有以下三个类,模拟一个简单的待办事项列表:

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; }
}

我可以陈述以下有关模型的信息:

  1. 更新仅存在于任务的上下文中。
  2. 任务仅存在于列表的上下文中。

因此,List 似乎是唯一的聚合根。 (实际上,我的数据访问层只允许加载/保存 List 对象。)但是我看不到如何将当前存在于我的 Task 类上的 UI 干净地推送到 List 类。目前,我的 List 类正在分发对 Task 对象的引用,允许调用者修改它们。

这是否意味着 Task 也是一个聚合根,即使它的存在依赖于一个包含列表?

提前致谢。

最佳答案

在我看来,在这种情况下,您可以有 1 个或 2 个聚合。这完全取决于您在列表中的任务是否大;以及你的更新会不会很大。

如果任务或更新不会增长很多,一个聚合 root(List) 就可以了。

否则你可以将它们分成两个聚合 root(List, Task) 其中 List 可以添加 TaskTask可以添加Update

关于c# - 如何识别域模型中的聚合根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com