我最近与一位同事进行了讨论,他坚持认为在领域驱动设计中,实体不应该有不修改其状态的行为。根据我迄今为止的经验,我从未听说过这种限制。它是有效的 DDD 规则吗?
给出一些上下文(简化场景) - 在我们的域中,我们有计算机实体,您可以在其上启动进程,我们的集成层实际上会将其委托给远程物理计算机并在那里启动进程。
那么,应该StartProcess
是一个Computer
实体的行为吗?还是应该将其包含在域服务中,因为它不会Computer
直接影响实体的状态?(它会在进程结束后间接修改状态,并将数据同步回我们的系统)。
对我来说,Entity 是一个自然的地方,因为它遵循无处不在的语言,但我想知道是否有人有充分的理由反对(或其他理由)。