当我使用一个GWT项目时,使用MVP pattern
和HandlerManager
通过事件在应用程序上进行通信。现在我正在我的项目上实施历史Machanisam。
他们(GWT tearm)使用类EventBus
来管理事件。
在阅读某些博客时,我会HandlerManger
Widgets
和EventBus
用于其他应用程序范围的通信。
但我觉得他们两个都有相同的功能,那么这两个实现的目的是什么,或者它们之间的区别是什么。
请帮帮我
答案 0 :(得分:12)
HandlerManager
是EventBus
的祖先,它是从(从中计算出来的)中提取出来的。
主要区别在于HandlerManager
有一个源,它会对发送给它的事件强制执行,而EventBus
可以调度没有源的事件(fireEvent
1}})或使用给定的动态源(fireEventFromSource
)。然后,您可以将处理程序附加到仅为来自给定来源的事件触发的EventBus
。
在窗口小部件中,您希望强制事件源是窗口小部件。对于全局应用程序范围的事件总线,您可以根据需要为每个事件设置无源或动态动态设置(RequestFactory
将其用于其EntityProxyChange
事件,您只能收听与给定类型EntityProxy
)相关的事件
注意:HandlerManager
的javadoc不鼓励将其用于应用程序范围的事件总线。