【问题标题】:Big list of events in GWT EventBusGWT EventBus 中的大事件列表
【发布时间】:2011-05-11 19:20:20
【问题描述】:

在 Google Web 工具包提供的示例中,他们仅在一个类中为整个应用程序添加事件处理程序。

如 - 对于模块 1、2 和 3,所有事件都在主 AppController 类中注册。我发现这有点单一,当我们使用 MVP 模式时,我们会在每个 Presenter 中声明一个名为 bind() 的方法,如下所示:

public class MyTestPresenter implements Presenter{

     private void bind()
     {
            TestEvent.eventBus.addHandler(TestEvent.Type, new TestEventHandlerImpl() )
     }

}


public class TestEvent
{
 public static SimpleEventBus eventBus = new SimpleEventBus()
}

查询是:

  1. 如果我们的应用程序很大——我们将使用一个事件总线来填充其中的一千多个事件——或者我们是否会设计为每个模块都有单独的事件总线实例?

  2. 保留静态事件总线字段的任何成本。将实例提供给所有类的任何更好的设计 - 通过构造函数将其传递给所有类,每个演示者类都有它的引用似乎有点混乱......

  3. 在事件处理方面,GWT 中的活动和位置是什么? - 有人可以指出如何理解活动/地点的一般概念吗?

【问题讨论】:

    标签: java gwt event-handling gwt2


    【解决方案1】:

    实际上我也不喜欢 GWT 中的事件总线实现。我之前问过 smt about。 现在我开发了一些桌面应用程序,并在接下来的方式中设计 eventBus。

    public interface EventBus {
        void fireEvent(Event event);
    
        <T extends Event> void addHandler(Class<T> eventType, Handler<T> handler);
    
        interface Event {
        }
    
        interface Handler<E extends Event> {
            void handle(E event);
        }
    }
    

    所以在通常的 Java 应用程序中我会以其他方式设计它,但在这里我们应该处理与 javascript 等有关的问题。

    如果我们的应用程序很大 - 我们会 使用一个事件总线来填充更多 超过一千个事件 - 或 我们会以这样的方式设计,我们 有单独的事件总线实例 每个模块?。

    我也在思考这个问题。我发现没有任何真正的优势。对于模块化,您可以分离事件的可见性。并且有一些缺点。假设您应该在同一个类中处理多个 eventBusse - 代码会很混乱。除此之外,您应该以某种方式将此实例映射到类。

    保持静态事件的任何成本 公交场。任何更好的设计 它是所有类的实例 - 传递 它通过一个 每个演示者类的构造函数 有它的参考似乎有点 杂乱无章...

    两者都可以。在新的 Activity-Place 框架中,它作为参数传递。

    GWT 中有哪些活动和地点 当涉及到事件处理? - 能 有人指点如何 理解的概念 一般的活动/地点?

    Activity 就像您的旧演示者,但没有低级视图绑定。就像用于指定窗口的历史条目一样放置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多