1

我的 GWT 应用程序遵循 MVP 模式,将单例EventBusDisplay+Presenter绑定在一起Activity(在 GIN 的帮助下):

public class MyActivity implements Activity {
  @Inject MyDisplay display; //usually bound in Singleton scope
  @Inject MyPresenter presenter;

  ...
  @Override
  public void start(AcceptsOneWidget panel, EventBus eventBus) {
    diplay.bindPresenter(presenter);
    presenter.start(eventBus);
    panel.setWidget(display);
  }
  ...
}

通常我会使用 GIN将新的特定实例注入RequestFactory特定的实例。Presenter我的演示者有start()方法,我可以传递EventBus代表Activity( ResettableEventBus) 创建的实例。

public MyPresenter {

  @Inject MyRequestFactory requestFactory;

  public void start(EventBus eventBus) {
    requestFactory.initialize(eventBus);
    ...
  }
  ...
}

我认为让 GIN 创建和注入MyRequestFactory. 但是如果我想对MyPresenterusing进行单元测试RequestFactorySource,我宁愿需要初始化RequestFactoryusing:

requestFactory.initialize(eventBus, new InProcessRequestTransport(processor));

问题来了。我可以MyRequestFactory在范围内绑定Singleton(生成的实例是否保持任何状态?),并用我的单例全局初始化它EventBus(它是否取决于Activity's EventBus?) - 后果是什么?我假设MyRequestFactory注入到的实例MyPresenter已经为生产或测试初始化​​。另一种解决方案是在 中注入一些额外的RequestFactory初始化策略MyPresenter,但有必要吗?

4

1 回答 1

1

RequestFactory旨在用作

假设您还有一个应用程序范围的事件总线,它的工作方式与您今天使用的一样:RequestFactory 只发布到事件总线,它不监听事件。

于 2013-04-19T13:43:42.350 回答