【问题标题】:DDD: Should I use the Symfony EventDispatcher for my domain events?DDD:我应该使用 Symfony EventDispatcher 来处理我的域事件吗?
【发布时间】:2014-07-30 11:25:40
【问题描述】:

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

对我来说,当一个经过良好测试的组件可用时,从头开始重新实现事件调度器几乎没有意义。但另一方面,Symfony 组件使所有事件都从一个基 Event 类扩展而来。这不会将我的域事件绑定到 EventDispatcher 组件吗?

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

【问题讨论】:

    标签: php symfony events domain-driven-design


    【解决方案1】:

    我想知道为什么没有 EventInterface。

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

    在我的例子中,我创建了一个在 DomainEvent 中实现的 DomainEventInterface,它又扩展了 Event。我使用 DomainEvent 作为我的基本事件类。如果我什至需要切换调度程序,这应该会使重构相当容易。而且,至少在我自己看来,避免将域直接耦合到事件组件。

    我创建自己的 DomainDispatcher 实例主要是为了避免将我的域绑定到实际的 Symfony 框架。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-30
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 2021-11-07
      • 2019-10-13
      • 2016-09-05
      相关资源
      最近更新 更多