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