首页 文章

DDD:我应该将Symfony EventDispatcher用于我的域事件吗?

提问于
浏览
6

我想知道是否应该使用Symfony EventDispatcher Component来处理我的DDD应用程序中的域事件 .

对我来说,当经过良好测试的组件可用时,从头开始重新安排事件调度程序是没有意义的 . 但另一方面,Symfony组件使所有事件都从基本Event类扩展 . 这不会将我的域事件绑定到EventDispatcher组件吗?

此外,如果我使用此组件,我应该在应用程序范围的event_dispatcher服务上引发域事件,还是应该将Symfony的应用程序事件和我的域事件分开(即创建一个新的EventDispatcher)?

1 回答

  • 4

    我想知道为什么没有EventInterface .

    这:https://github.com/symfony/symfony/issues/9539表示因为Event是一个值对象,所以不需要任何接口 . 我承认我并不完全遵循这个论点(至少在耦合方面),但没有进一步研究 . 可能是一个很好的DDD问题 .

    在我的例子中,我创建了一个DomainEventInterface,它在DomainEvent中实现,而DomainEvent又扩展了Event . 我使用DomainEvent作为我的基本事件类 . 如果我甚至需要切换调度员,这应该使重新分解相当容易 . 而且,至少在我看来,避免将Domain直接耦合到Event组件 .

    我主要创建自己的DomainDispatcher实例,以避免将我的域绑定到实际的Symfony框架 .

    另请注意,事件侦听器接口在S2.4中已更改 . Event对象将在3.0中简化 .

相关问题