我可以使用一些帮助来理解我的域模型并确保我正确地接近设计。
我有一个名为 Department 的聚合根。Department 对象有几个子值类型,有助于定义“部门”的业务概念。在我的 UI 中,用户可以列出、创建、编辑和删除部门对象。
我有另一个名为 Project 的聚合根。一个项目有几个子值类型,但也与一个部门有关系,因为每个项目都由一个部门“拥有”。可以创建、编辑、删除项目等,这样做对部门没有影响,而删除部门也会删除它拥有的任何项目。
我的 UI 将根据当前用户有权访问的部门显示项目列表。他们可能能够访问多个部门。当同时显示为列表项和详细信息时,我需要在项目中显示部门徽标。
我的第一个想法是 Project 是一个聚合根,具有一个简单的 DepartmentID 属性,可用于“查找”部门。但现在我开始认为我真的只有一个总根:部门。
你怎么看?
更新
我不知道这是否是讨论的关键或改变了什么,但在阅读前几个答案后我想到了以下想法。
部门似乎有两种情况:
- 作为支持修改的独立实体。
- 作为 Project 的子项,在这种情况下包含只读数据且没有行为。
这让我认为我的模型中应该有两个“对象”,一个用于案例 #1 的聚合根和一个用于案例 #2 的值类型。我在正确的轨道上吗?