MVPパターンについて読むと、ViewとPresenterの間に2つの通信パターンがあることがわかりました。
ViewはPresenterを認識しませんが、Presenter
HasClickHandler
がイベントハンドラーを登録するインターフェイスを実装するUIコントロールを提供します。ビューはプレゼンターを認識します。特に、プレゼンターのハンドラーメソッド名を認識します。たとえば、ビューで[送信]ボタンがクリックされると、ビューは
onSubmitButtonClicked()
プレゼンターのパブリックメソッドを呼び出します。
後者は、Presenterへのイベントの送信を直接シミュレートできるため、JUnitテストの方が簡単であることがわかりました。しかし、私の理解では、ビューはプレゼンターについて知らないはずです。
トレードオフを解決するための3番目のアプローチは、プレゼンターがイベントハンドラーをビューのコントロールに登録できるようにすることです。ここで、ハンドラーはパブリックプレゼンターメソッドを呼び出します。
public void bind() {
display.getSubmitButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
onSubmitButtonClicked();
}
});
}
しかし、これは多くの定型コードを導入します。
View-Presenterコミュニケーションの正しいパターンは何ですか?