假设我有一个在我的应用程序中的2个位置使用的组件C. 例如,我有一个文件夹列表,显示在2个选项卡中.当用户在一个部分中重命名文件夹时,此更改也应反映在另一个部分中.
我正在考虑使用EventBus,并使文件夹组件触发EventBus事件,比如FolderChangedEvent.此事件将被第二个文件夹组件拦截,该组件将自动更新其文件夹列表.
问题是,如果我想在某个地方在第3个地方使用这个文件夹组件,这个地方也会更新文件夹列表.这可能不是应用程序的期望行为.
通常,我会使Folder组件有一个自己的addFolderChangedHandler(...)方法,但由于这个组件非常复杂并且有子组件,这可能会创建意大利面条类型的代码.但是,我不认为这个组件应该包含任何特定于应用程序的逻辑,并且直接在应用程序的EventBus中抛出事件,这对于它来说太高级了.
这种情况的最佳做法是什么?如何有效地使用EventBus?
事件总线的目的是使事件处理更容易,是的,以使代码更易读和易于管理.我会回答这个问题,假设你的困境在于如何对事件进行分类.
GWTEvent类有一个source()方法.这告诉你是谁解雇了这个事件.如果这是不可接受的,那么您的事件中始终可以有一个"id"字段,由发件人填充.因此,如果TreeView1正在触发事件,则事件的id将设置为"treeView1".当事件处理程序收到此事件时,它将检查id并决定是否处理该事件.这样,您就可以为整个应用程序使用单个"God"事件处理程序.
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |