【发布时间】:2011-09-16 05:20:08
【问题描述】:
我正在尝试掌握 DDD,并觉得我已经很好地掌握了实体、聚合、聚合根、存储库和值对象以及如何在代码中实际表示这些概念。
我仍在苦苦挣扎的是如何在实际代码中表示引用(即不构成聚合的关系)。假设我有以下两个聚合
DISCUSSIONGROUP (entity, aggregate root)
+name: string
+ENTRY (entity)
+title: string
+message: string
+timestamp: date
+madeByUser: USER
USER (entity, aggregate root)
+name: string
+email: string
+memberOf: DISCUSSIONGROUP
用户可以是讨论组的成员,但用户实体不属于同一聚合。然而,两者之间仍然存在关系(参考)。在查看实际代码时,我会实现聚合关系,例如(使用 C#):
interface IDiscussionGroup {
string Name { get; }
IList<IEntry> { get; }
...
}
即使用简单的 C# 引用。您是否会以相同的方式实现 DDD 引用(如上所述),即:
interface IUser {
IDiscussionGroup MemberOf { get; }
...
}
是否应该使用其他构造来指示较弱的关系类型?
【问题讨论】: