【发布时间】:2012-03-19 17:11:28
【问题描述】:
假设我有一个组件 C,它在我的应用程序的 2 个地方使用。例如,我有一个显示在 2 个选项卡中的文件夹列表。当用户重命名文件夹的一部分时,此更改也应反映在另一部分中。
我正在考虑为此使用 EventBus 并使文件夹组件触发 EventBus 事件,例如 FolderChangedEvent。此事件将被第二个文件夹组件拦截,该组件将自动更新其文件夹列表。
问题是,如果我想在某个时候在第三个地方使用这个文件夹组件,这个地方也会更新文件夹列表。这可能不是应用程序的预期行为。
通常,我会让 Folder 组件有一个自己的 addFolderChangedHandler(...) 方法,但是由于这个组件非常复杂并且有子组件,这可能会创建意大利面条式的代码。但是,我觉得这个组件不应该包含任何特定于应用程序的逻辑并直接在应用程序的 EventBus 中抛出事件,这对它来说太高级了。
此案例的最佳实践是什么?您如何有效地使用 EventBus?
【问题讨论】: