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。他们知道公交车。

总结:

没有插件的应用程序可以在没有事件总线的情况下实现。

具有插件支持的应用程序应该使用事件总线来实现,因为事先不知道有多少插件连接到事件生成器。