【问题标题】:What's the best place to trigger an event in MVC?在 MVC 中触发事件的最佳位置是什么?
【发布时间】:2017-04-28 07:34:16
【问题描述】:

拥有MVC系统,是在控制器中触发事件,还是在有依赖注入的服务中触发?

例如。

class MyController
{
    $brainStorage->store($yellowBrain);

    $EventDispatcher->dispatch(new BrainCreatedEvent($yellowBrain));

...

或者应该是触发事件的存储服务?

我更喜欢控制类是唯一知道域事件的类。

优缺点是什么?

【问题讨论】:

    标签: oop model-view-controller


    【解决方案1】:

    如果您的控制器开始进行事件处理,它将失败单一责任,因此我认为最好的选择是创建一个抽象并让客户端决定注入应用程序服务的算法,以协调您的工作流程(使用策略模式、IOC、消除代码异味,您的代码将开始具有可扩展性和稳定性)
    希望这有助于决定,亲切的问候!

    【讨论】:

    • Elias 控制器的职责是什么?单人? :-)
    • 我问在哪里触发而不是在哪里听。触发器与监听不同。触发是管理层不知道的。
    • 应用服务应该触发事件,因此它负责读取业务对象->修改它->持久更改->保存后触发事件。如果将所有逻辑都放在此类中,则可以有多个客户端使用单个服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2016-09-22
    相关资源
    最近更新 更多