我试图应用一些DDD概念,我只是想知道什么更有意义:对于实体来调用自己的方法,或为用户(演员)这样做?该实体是否调用其自己的行为或执行该actor?
例如,假设我们有一个约会实体。 只有当他/她是该约会的所有者时,用户才能取消该约会(因此,在我们允许该操作之前,我们需要检查用户是否具有适当的权限)。我们可以做的两种方式这一个:
pseudocode
// method #1
User.Cancel(a *Appointment) result
// method #2
Appointment.Cancel(u *User) result
限界上下文是“约会”,但它似乎更有意义,为用户调用上比周围的其他方式的实体的行为。 哪种方式更好,为什么?
感谢您的回答。除非你说权限检查不属于一个聚合,否则一切都很清楚。我认为这就是聚合的原因 - 封装领域知识和执行不变量。要使用你的例子,不应该约会'AR'知道秘书域对象可以做什么和不能做什么? – user7467314
授权是一个交叉问题,因此是一个通用的子域。在Eric Evans的DDD书中,在实施DDD书以及所有其他来源中,这是作为另一个BC实施的。你可以在这里阅读更多:http://stackoverflow.com/a/23485141/2575224或只搜索“权限检查ddd”在谷歌 –