私は GWT を使用して比較的大きなアプリケーションを構築し、Google のベスト プラクティスに従っています。はい、動作することがわかりました。通常、GWT People は MVP に教えてくれます。
MVP は、アプリケーション開発全体を管理するのに役立つピースにアプリケーションを分離します。
通常、MVP を使用する場合、アプリケーションには以下を含むエントリポイントが含まれます。
public class Contacts implements EntryPoint {
public void onModuleLoad() {
ContactsServiceAsync rpcService = GWT.create(ContactsService.class);
HandlerManager eventBus = new HandlerManager(null);
AppController appViewer = new AppController(rpcService, eventBus);
appViewer.go(RootPanel.get());
}
}
ご覧のとおり、クライアント側の RPC、イベントを通知するためのイベントバス、ルートであり、ビューの変更、イベントへの登録など、アプリケーション内のすべてを制御するアプリケーション コントローラーを作成します。
アプリケーション コントローラーはValueChangeHandler<String>
、履歴がいつ変更されたかを認識し、これに基づいてビューの変更などのアクションを実行できるようにするための実装も行います。次に、次のようになります。
- モデル
- ビュー
- 発表者
モデルはサーバーと共有可能です。プレゼンターは、ビューが実装するインターフェースを宣言します。次に、プレゼンターとビューがインターフェイスを介して対話し、プレゼンターとサーバーが対話rpcService
し、エントリ ポイントで宣言してアプリケーション コントローラーに注入します。
また、この方法でアプリケーションを実装すると、テストに JUNIT を使用すると、プレゼンターのみをテストできるため、ビューをバイパスできるため、メリットがあります。ビューをテストに含めると、多くの時間がかかるためです。 . ビューはウィジェットを宣言しますが、プレゼンターはウィジェットと対話するためにビューからインターフェースをインポートできます
最終的に、アプリケーション階層は次のようになります。
--com.example.name.clients:
--AppController --name.java
--name.Service.java
--name.ServiceAsync.java
--com.example.name.events:
--com.example.name.presenters:
--com.example.name.views:
--com.example.name.models:
--com.example.name.server:
--com.example.name.shared:
詳細については、こちらをご覧ください。