Locked History Actions

GWT/GWTP/EventBus

イベントバス

目的

Google I/O 2009 - Best Practices for Architecting GWT Appの13:50あたり。ここでは、アプリケーションのdecoupling(依存性の除去)の方策として三つあげられている。

  • An event bus(イベントバス)
  • MVP pattern for your custom widgets(カスタムウィジェットについてMVPパターンを用いる)
  • Dependency injection of app-wide services(アプリケーション全体で用いるサービスを注入する)

これによって、

  • Easy rejiggering of the app
    アプリの改変がやりやすくなる

  • Easy to defer pokey DOM operations
    ?

  • Easy unit testing
    ユニットテストが簡単になる

  • Fast test execution
    テスト実行が素早くなる

仕組み

イベントバスの仕組みについては、GWT Event Bus Basicsがわかりやすい。

このビデオの例では、Controllerどうしがイベントを通知し合う、つまり直接的に相手のメソッドを呼び出す代わりに「呼び出しイベント」というべきものをバスに送り込むことを行なっているが、GWTPではControllerではなくPresenterを使うことになっているので、ControllerはPresenterに読み替えなければいけない。

※ただし、GWTPの自動生成するサンプルコードでは、EventBusがPresenterに注入されるものの、使用されてはいないことに注意。