GWT中事件总线的动机

Mik*_*ser 6 java gwt web-applications

我正在GWT中创建一个类似MVP的应用程序.

  • 有多个面板,每个面板始终可见.
  • 每个面板都有一个Presenter,并且有一个AppController位于所有Presenters之上.
  • 在一个Presenter中会出现一些应用程序级事件,但会对其他演示者产生影响.
  • 建议的体系结构似乎涉及事件总线.但是,我不确定我是否看到了更简单的优势.
  • 特别是,简单地允许AppController(并且只有AppController)订阅来自任何Presenter的事件会不会更清晰?然后,AppController可以告诉每个Presenter在给定事件的情况下该做什么.
  • "事件总线"似乎是一个准全局变量.但是,如果你能用更精确定义的方法(即AppController在每个Presenter上调用的方法)完成同样的事情,那不是更好吗?

更准确地说明我的担忧:为什么要引入一个事件总线,而不是简单地让事件"冒泡"到适当的决策层?对我而言,这似乎是MVP概念最直接的扩展,并且它不需要事件总线的新概念.我不明白事件总线引入了什么问题来解决.

Chr*_*ach 8

事件总线的优点是代码分离.

您可以将自定义事件发送到总线,而不再需要关心您的事件.每个演示者只订阅那些它真正需要知道的事件.这将导致更清晰的代码,因为您不必创建一个调度程序,必须知道所有演示者将事件委托给他们.

在我看来,事件总线是一个非常好的事情,使代码干净,易于理解.