以 DDD 方式将 EventDispatcher 注入实体是否正确?
想象一下,我有一个名为 Card 的 DomainModel。这张通用语言的卡可以激活和停用。但是激活和停用涉及调用它在现实世界中激活的第三方 API。
因此,为了保持我们的领域模型清晰,我的方法是我的 Card 实体有一个如下所示的激活方法:
public function activate()
{
$this->active = true;
$this->dispatcher->dispatch(CardEvents::CARD_ACTIVATION, new CardActivation($this));
}
然后服务正在监听调度程序以使用外部 API 激活或不激活。
注入这个 EventDispatcher 的实体是否正确?
如果对api的调用失败,该怎么办?
有没有感觉监听服务最终改变了 Card 本身的 active 属性?
谢谢。