15

詳細が必要な場合は、お知らせいただくか、この質問の最後の行を参照してください。私はすでにたくさん読んでいて、単純なものを複雑なものに変えていると感じていますが、それでもあちこちで立ち往生しているので、それらの非常に具体的な点で私を助けてくれるかもしれません。

Netbeans IDE7とJDK7を使用していますが、フレームワークは使用していません。最初のウィンドウはJFrameであり、他のすべてのウィンドウはmodal=trueのJDialogです。

質問:

  1. スイングでMVCパターンを正しく実装するにはどうすればよいですか?以下のアイデアからどちらが良いですか:(A)または(B)?または多分別のもの...なぜそれが良いのですか?

    (A)メイン:

    MyModel model
    MyView view(model)
    

    私の見解:

    MyController(this, model)
    

    (B)
    メイン:

    MyModel model
    MyView View
    MyController controller(view, model)
    
  2. MainFrameでjbutton1をクリックすると、設定を編集するためにSettingsFrameを開くために必要です。SettingsFrameのビュー、モデル、およびコントローラーをどこでインスタンス化する必要がありますか?メインフレームコントローラーでは?

  3. MVCの編成と実装に関して、MVCの「レッグ」(モデル、ビュー、またはコントローラー)の1つまたは2つが(明らかに)欠けている、より具体的な機能をどのように処理する必要がありますか?それらのために空のクラスを作成する必要がありますか?

    a. The implementation of a TrayIcon
    b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files)
    c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file)
    d. My own implementation of TableModel
    e. json
    
  4. アプリケーション全体で設定されたオブジェクトを正しく保持して使用するにはどうすればよいですか?さまざまな場所(ビュー、モデル、コントローラー)で情報が必要になりますが、実行時にユーザーによって変更される可能性があります)。このモデルをシングルトンにするのは良い考えですか?

  5. 次の場合はどうすればよいですか。

    a. View needs some data from the Model? 
    What I'm doing: using the reference of Model which I keep in the View
    b. View needs some data from the Controller?
    What I'm doing: using the reference of Controller which I keep in the View
    c. Model needs some data from the Controller?
    Still didn't happen but I have no idea how to do correctly
    d. Model needs some data from the View?
    What I'm doing: pulling all my hair from my head...
    e. Controller needs some data from the View?
    What I'm doing: using the reference of the View which I keep in the Controller
    f. Controller needs some data from the Model?
    What I'm doing: using the reference of the Model which I keep in the Controller
    g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController?
    What I'm doing: thinking of jumping from the highest building...
    
  6. MVCを正しく実装したかどうかを知るためのヒントはありますか?モデルまたはコントローラーで大量のデータを処理する必要がありますか?

  7. 私もDAOを使用していますが、私が行っているのは次のとおりです。私のモデルには

    ArrayList MyModel load()

    DAOのインスタンスを作成し、DAOによって返されたモデルのArrayListを返すメソッド。次に、モデルでこのモデルのArrayListを処理する場合と、コントローラーに処理を許可する場合があります。これは良い習慣ですか、それとももっと良い方法がありますか?プロセスとは、ArrayListを反復処理し、モデルからデータを取得することを意味します。

  8. 一部のビューへのアクセスを制限するPasswordCheckjDialogがあります。コードを混乱させることなく、同じPasswordCheckダイアログを使用して、さまざまなビューへのアクセスを許可/制限できるように、MVCの観点からそれを再利用するにはどうすればよいですか?

  9. 他のヒント、ヒント、アイデア、提案はありますか?

コンテキスト: Java Swing MVCソフトウェアを短時間で開発する必要がありますが、デフォルトではJava開発者ではなく、特にJavaでMVCパターンを実装するのにあまり慣れていません(アイデアはわかりますが、不足している場合があります)クラス間の関係を実装するための知識)。アプリケーションは基本的に、メインフレームにJTableがあり、このデータを表示するローカル/オンラインファイルのモニターです。新しいWatchServiceAPIを使用して、ローカルファイルを追跡し、DAOを使用してh2データベースにそれらの情報を保存し、メインフレームのjtableにこのデータを再読み込みします。また、新しいファイル(TrayIconを使用している場合)についてユーザーに通知する必要があります。オンラインファイルの監視/アップロード/ダウンロードには、HttpsUrlConnectionとjsonを使用しています。また、設定をカスタマイズできる場合もあります。

お手数をおかけしますが、よろしくお願いいたします。

4

1 に答える 1

7

Sun (Oracle) の提案をご覧ください。

簡略化の 1 つとして、各コンポーネント (モデル、ビュー、コントローラー) を最上位のアプリケーション コンポーネントに登録して、各コンポーネント (A または B) 間の個別の参照ではなく、単一の参照ポイントを提供することができます。私が引用した記事は、プッシュとプルの設計に関するアイデアを提供しています。より一般的な最新のアプローチとしてプッシュをお勧めします。開示:私はJavaとMVCの経験がありますが、Swing自体のMVCは経験していません。

SettingsFrame のビュー、モデル、およびコントローラーをどこでインスタンス化する必要がありますか?

はい、そうです、または最上位のアプリケーション コンポーネントで。

(明らかに) 1 つまたは 2 つの MVC の「足」(モデル、ビュー、またはコントローラー) を欠いている、より具体的な機能をどのように処理すればよいですか?

GUI のみの部分を独自の GUI ライブラリとして実装します。そして、サービス ライブラリとしての純粋なアルゴリズム/サービス ピース。

モデルまたはコントローラーで大量のデータを処理する必要がありますか?

データ処理アルゴリズムは、コントローラーやサービス ライブラリにもうまく収まります。モデルは、おそらくデータ型の変換または検証を超えて多くの処理を行うべきではありません。

アプリケーション全体で設定のあるオブジェクトを正しく保持して使用するにはどうすればよいですか?

登録に関する私のメモを参照してください。シングルトンが適切な場合があります。

于 2012-06-07T13:36:47.600 に答える