MVPパターンを実装するGWTアプリケーションにおけるコントローラーの役割は何ですか?
-
01-10-2019 - |
質問
私はGWTに慣れておらず、長いギャップの後にプログラミングに戻ることができます...私の質問はGWTでのMVPの実装に関するものです。私は次の投稿を経験しました、そして彼らは非常に役に立ちましたが、まだいくつかの疑問があります
MVPとMVCとは何ですか?違いは何ですか? GWTアプリケーションのアーキテクテクタリングに関する推奨事項は何ですか? MVC、MVP、またはカスタムメッセージングソリューション?
GWTチュートリアル(http://code.google.com/webtoolkit/articles/mvp-architecture.html)MVPのContoller(AppController)も整備されており、一部の応答は、プレゼンターではなくContollerレベルで管理されています。それで、私の質問は、MVPパターンの実装におけるコントローラーの役割はどうあるべきかということです。
Asyncサーバーの呼び出し、プレゼンター、またはコントローラーをどこから開始する必要がありますか。レコードを保存する必要がある場合は、サーバー関数(DAOを呼び出してレコードを保存する)を発表者から呼び出す必要があるか、イベントバスとコンロラーを使用してプレゼンターポストイベントを使用する必要がありますイベントに基づいて行動し、保存するためにサーバー関数を呼び出します。
解決
GWTチュートリアルページあなた にリンク AppControllerについて次のように述べています。
プレゼンターに固有ではなく、代わりにアプリケーションレイヤーにあるロジックを処理するために、AppControllerコンポーネントを紹介します。
したがって、複数のプレゼンター、ビュー、モデル(多分複数のモデル)の間の接着剤です。また、ブラウザの履歴も処理します。そして、多分、1人のプレゼンターに固有のものではありません。
サーバーの呼び出しについては、いくつかのオプションがありますが、私は個人的には見解からそれをしません。その理由は、複数のビューとプレゼンターが1つのモデルで協力できるためです。そして、彼らがモデルを変更するとき、その変更はサーバーに送信する必要があります。たぶん、あなたはすぐにそれをしたくないかもしれませんが、それらを送る前にいくつかの変更を集めてください。その場合、AppControllerによって設定されたタイマーを設定することができます。
他のヒント
あなたの最後の段落に答えて、私はあなたがそれをすることになっている何か(いくつかのボタン)があるならば、あなたはそれをプレゼンターでそれをするべきだと思います。プレゼンターはそうです 論理的に ビューに強く結びついています(技術的には、インターフェイスでは実装ではなく、弱く結ばれる必要があります)。ビューから明示的に呼び出されないアクションにレコードを保存したい場合、私はプレゼンターではそれをしません。