アクティビティと場所に関するgwtの例がどのように機能するかを理解しようとしています(https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces)。なぜ彼らがプレゼンターのためのインターフェースを定義するのか疑問に思います。ビューインターフェイスは、ビューを簡単に交換するのに役立つことを知っています。しかし、プレゼンターインターフェイスの使用は何ですか?
4 に答える
設計をきれいにするためのMVP アーキテクチャのもう 1 つの重要な要素は、を定義することです ( のインターフェイスのPresenter interface
美しさは既にわかっています)。OOP concept
JAVA
Presenter
イベントを受信したときにアクセスできるようView
にするインターフェイス。Presenter インターフェースは以下を定義します。callback
presenter
public interface Presenter<T> {
void onAddButtonClicked();
}
そして、以下のようにプレゼンターをビューに設定できます
private Presenter<T> presenter;
public void setPresenter(Presenter<T> presenter) {
this.presenter = presenter;
}
最後に、PresenterConcreteClassがpresenter
インターフェイスを実装すると、それらimplementations
がトリガーされます。
インターフェイスを使用することのクリーンさに加えて、ビューをテストしない理由はありません。エンド ツー エンドのテストを使用することもできますが、単純GWTTestCase
にビューをインスタンス化し、モック プレゼンターを使用することもできます。
次に、「このボタンをクリックすると、値 X、Y、および Z を引数としてプレゼンターからこのメソッドを呼び出す必要がある」、または「これらの引数を使用してビューのこのメソッドを呼び出すとき」をテストできます。 、そのようなウィジェットは赤くなり、他のウィジェットは非表示/折りたたみ/表示/何でもする必要があります。
また、これを使用して、簡単なテストベッドアプリを同様に構築し、偽のデータを使用して UI を手動でテストしたこともあります。このアプリは、偽のデータを使用してビューを呼び出すプレゼンターをシミュレートするボタンで構成され、ビューからのプレゼンターのコールバックをWindow.alert
または類似のもので処理しました。ブラウザーでアプリを起動し、あちこちをクリックして、ビューが期待どおりに機能することを検証します。
これは、後でフォームにフィールドを追加するときに、プレゼンターと正しく関連付けるために役立ちます。単体テストで十分な場合は、実際のプレゼンターから GWT-RPC/RequestFactory/その他のサービスをセットアップしたくありません。
具象クラスではなくインターフェイスを使用してアプリケーションを設計することは、常にベスト プラクティスです。