GWT Event Bus 有哪些好处
GWT Event Bus for which benefits
我很难理解在 GWT 中使用事件总线概念的好处。
我已经通过许多示例展示了如何使用它。我知道它是如何制作的,但我不明白它为什么有用。
我举个例子:
Button button = new Button("click");
button.addListener(new ButtonListenerAdapter(){
@Override
public void onClick(Button button, EventObject e) {
doSomething() ;// must replace it with fireEvent later :(
}
});
为了在上面的代码中添加事件总线功能,我们必须引入更多代码:
1) 创建一个扩展事件的事件 class(实现 2 种方法)
2) 为事件处理程序创建接口,其中 dosomething() 将是抽象的
3) 实现接口
4) 事件发生的class必须实现HasHandler接口,引入HandlerManager实例,实现fireEvent,注册事件并触发事件。
现在我的问题是,如果我有 50 个 UI 事件,我看不到将上述 4 个步骤复制到应有的位置的好处。如果我不这样做,我将面临的真正问题是什么。
编辑:
如果事件和事件处理程序在 classes 中分开,是否会使 EventBus 模式变得有趣?
AddContactEvent.java
AddContactEventHandler.java
RemoveContactEvent.java
RemoveContactEventHandler.java
没有事件总线
示例:您可以直接从农场购买苹果。
Button
维护听众集合。 Button
了解所有侦听器并需要在循环中通知他们。 Button
与处理程序直接耦合。
事件总线
示例: 您从商店购买苹果,商店从农场购买苹果。商店是您和农场之间的经纪人。你不知道农场。农场不知道你。
事件总线是事件生产者和事件消费者之间的中介。事件生产者了解事件总线,但并非所有事件消费者。
Button
不知道听众。它只知道 EventBus。
处理程序不知道 Button
。他们知道公交车。
总结:
没有插件的应用程序可以在没有事件总线的情况下实现。
具有插件支持的应用程序应该使用事件总线来实现,因为事先不知道有多少插件连接到事件生成器。
我很难理解在 GWT 中使用事件总线概念的好处。 我已经通过许多示例展示了如何使用它。我知道它是如何制作的,但我不明白它为什么有用。
我举个例子:
Button button = new Button("click");
button.addListener(new ButtonListenerAdapter(){
@Override
public void onClick(Button button, EventObject e) {
doSomething() ;// must replace it with fireEvent later :(
}
});
为了在上面的代码中添加事件总线功能,我们必须引入更多代码:
1) 创建一个扩展事件的事件 class(实现 2 种方法)
2) 为事件处理程序创建接口,其中 dosomething() 将是抽象的
3) 实现接口
4) 事件发生的class必须实现HasHandler接口,引入HandlerManager实例,实现fireEvent,注册事件并触发事件。
现在我的问题是,如果我有 50 个 UI 事件,我看不到将上述 4 个步骤复制到应有的位置的好处。如果我不这样做,我将面临的真正问题是什么。
编辑:
如果事件和事件处理程序在 classes 中分开,是否会使 EventBus 模式变得有趣?
AddContactEvent.java
AddContactEventHandler.java
RemoveContactEvent.java
RemoveContactEventHandler.java
没有事件总线
示例:您可以直接从农场购买苹果。
Button
维护听众集合。 Button
了解所有侦听器并需要在循环中通知他们。 Button
与处理程序直接耦合。
事件总线
示例: 您从商店购买苹果,商店从农场购买苹果。商店是您和农场之间的经纪人。你不知道农场。农场不知道你。
事件总线是事件生产者和事件消费者之间的中介。事件生产者了解事件总线,但并非所有事件消费者。
Button
不知道听众。它只知道 EventBus。
处理程序不知道 Button
。他们知道公交车。
总结:
没有插件的应用程序可以在没有事件总线的情况下实现。
具有插件支持的应用程序应该使用事件总线来实现,因为事先不知道有多少插件连接到事件生成器。