2

我最近与一位同事进行了讨论,他坚持认为在领域驱动设计中,实体不应该有不修改其状态的行为。根据我迄今为止的经验,我从未听说过这种限制。它是有效的 DDD 规则吗?

给出一些上下文(简化场景) - 在我们的域中,我们有计算机实体,您可以在其上启动进程,我们的集成层实际上会将其委托给远程物理计算机并在那里启动进程。

那么,应该StartProcess是一个Computer实体的行为吗?还是应该将其包含在域服务中,因为它不会Computer直接影响实体的状态?(它会在进程结束后间接修改状态,并将数据同步回我们的系统)。

对我来说,Entity 是一个自然的地方,因为它遵循无处不在的语言,但我想知道是否有人有充分的理由反对(或其他理由)。

4

1 回答 1

2

IMO 实体行为不需要修改状态,但至少应该发出一个事件。在这种情况下,事件将类似于ProcessStarted. CQRS/事件源视图本质上是作为命令处理程序聚合的——它们处理命令并发出事件。当行为需要或为查询目的非规范化时,状态是显式的。

于 2013-04-30T00:02:56.047 回答