1

私の GWT アプリケーションは、 singleton を使用して MVP パターンに従いEventBusDisplay+を(GIN の助けを借りて)Presenterバインドします。Activity

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 を使用して、specialの新しいインスタンスをRequestFactoryspecificに注入します。Presenter私のプレゼンターにはメソッドがあり、 ( )に代わって作成されたインスタンスstart()を渡すことができます。EventBusActivityResettableEventBus

public MyPresenter {

  @Inject MyRequestFactory requestFactory;

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

GIN に の新しいインスタンスを作成して注入させることは、常に安全であると思いますMyRequestFactoryMyPresenterしかし、を使用して単体テストを行いたい場合は、以下を使用RequestFactorySourceして初期化する必要があります。RequestFactory

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

そしてここで質問です。MyRequestFactoryスコープ内でバインドできますかSingleton(生成されたインスタンスは状態を保持しますか?)、シングルトンでグローバルに初期化できますかEventBus(に依存しActivityますEventBusか?) - 結果はどうなりますか? MyRequestFactory注入されたインスタンスMyPresenterは、本番用またはテスト用にすでに初期化されていると想定します。別の解決策は、追加のRequestFactory初期化戦略をに注入するMyPresenterことですが、必要ですか?

4

1 に答える 1