1

JDialog社内の Swing アプリの子コンテナである既存のものを改造するように依頼されました。私はダイアログをゼロから書き直し、Swing アプリを真の MVC/MVP アーキテクチャに似せるようにするための責任を負うように依頼されました (そのため、私のJDialog改訂は、アプリ自体に対する多くのプロ MVC 変更の最初のものになります)。

Web アプリに関連する MVC/MVP を理解しています。

  • コントローラー - Web アプリ フレームワークが HTTP 要求を処理するためにディスパッチするものです。通常、複数のメソッドで構成され、各「コントローラー メソッド」がわずかに異なる URL の要求を処理します。
  • モデル - 呼び出し固有のデータを表す DAO または POJO/Bean。コントローラーはDBからモデルをフェッチし、それをビューに挿入します
  • ビュー - クライアント/リクエスタに送り返される HTML/JSP を最終的に生成するメカニズム

これは、すべてのMVC/MVP Web フレームワークが動作する方法ではありませんが、一般的な考え方です。

しかし、これを Swing アプリに変換する方法を決定するのに苦労しています。Swing アプリには、次のものがあります。

  • それJDialog自体
  • ダイアログの「ビュー」を構成するすべての UI ウィジェット ( JButtonsJTextFieldsなど)
  • ユーザーがビューを操作するときにダイアログがどのように動作するかについての「ビジネス ロジック」を集合的に構成するすべての UI ウィジェットのアクション/イベント リスナー
  • 他のすべての「UI グルー コード」 (有効/無効にするウィジェットの設定、画面上のサイズと位置の設定、ツールチップ テキストの設定など)
  • その他にもいろいろ

JDialogMVC/MVP アーキテクチャ パターンを使用して機能するために必要なすべてのコードをどのように整理すればよいでしょうか? また、MVC/MVP Swing アプリを紹介する記事、チュートリアル、または既存のオープン ソース プロジェクトがあれば、それらにも興味があります。前もって感謝します!

4

3 に答える 3

1

ここで説明したように、Swing MVC は、モデルの変更をリスニング ビューに反映するために使用されるオブザーバー パターンに依存します。その結果、多くは のコンポーネントに依存しますJDialog。ダイアログをモードレスにする必要がある場合は、こちらこちらの例が役立つ場合があります。

于 2013-05-07T12:25:54.513 に答える
1

世の中には有効なレシピがたくさんあるので、私が使っているもの、つまりThe Humble Dialog Box からアイデアを借用した修正された MVP デザインについてのみ説明します。

基本的に、可能な限り少ないアプリケーション ロジックで GUI を作成します (ゼロが目標です)。GUI へのハンドルを持つ「プレゼンター」クラス (コントローラーと同様) を作成し、適切なリスナーを UI に挿入します。

いくつかの利点:

  1. すべてのアプリケーション コードが UI の外にあるため、コードは 100% テスト可能です。
  2. 毎回アプリを起動する必要がなく、GUI のプロトタイプをすばやく作成できるため、時間を大幅に節約できます。
  3. 関心の分離により、コードの読み取り/保守が容易になります。
  4. GUI コードは Swing のみになります。あなたのアプリには詳しくないが、Swing には精通している新しいチーム メンバーがすぐに参加できます。

Swing の MVC の実装に関しては、実際には気にしません。それがSwingのビジネスです。Swing が動作すると仮定します (通常は動作します)。確かに、カスタム レンダー、エディター、モデルなどを作成するために、この種のことを知る必要がありますが、これらはアプリケーションフレームワーク (あなたが尋ねていると思います) が知る必要も気にする必要もない詳細です。について、ほとんどの場合。

于 2013-05-07T18:48:43.203 に答える