イベントバス
目的
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に注入されるものの、使用されてはいないことに注意。