6

当我使用一个 GWT 项目时,我正在使用MVP patternHandlerManager通过事件在应用程序上进行通信。现在正在我的项目中实施 History Machanisam。他们(GWT tearm)使用 ClassEventBus来管理事件。

当阅读一些博客时,我发现HandlerManger用于WidgetsEventBus其他应用程序范围的通信。

但是我觉得它们都有相同的功能,那么这两个实现的目的是什么,或者它们之间有什么区别。

请帮我

4

1 回答 1

12

HandlerManager是 的祖先,EventBus从它中提取(分解出来)。

主要区别在于,aHandlerManager有一个,它对被分派给它的事件强制执行,而EventBus可以在没有源 ( fireEvent) 或给定动态源 ( fireEventFromSource) 的情况下分派事件。然后,您可以将处理程序附加到EventBus仅针对来自给定源的事件触发的处理程序。

在小部件中,您希望强制事件源是小部件。对于全局应用程序范围的事件总线,您要么不想要源,要么根据需要为每个事件动态RequestFactory设置源(将其用于其EntityProxyChange事件,因此您只能监听与给定类型相关的事件EntityProxy

注意:javadocHandlerManager不鼓励将它用于应用程序范围的事件总线。

于 2013-10-03T08:56:14.557 回答