開発しようとしているアプリケーションのアーキテクチャの設計で問題が発生しています。私はJAVAに取り組んでおり、JAVA、アーキテクチャ、およびパターンに関する全体的な知識を深めたいため、このアプリケーションに取り組み始めました。ガイドラインに従って、再利用可能な低結合アプリケーションを作成したいと考えています。このアプリケーションには JFrame が 1 つしかありませんが、その中に複数の JPanel があり、それぞれがアプリケーションのモジュールを表しています。
問題は、JAVA Swing で適切な MVC パターンを実装する方法です。私はそれが行われるべき方法を理解する方法に苦労しています。
他のすべてのコントローラへの参照を保持するメインのコントローラ クラスが必要ですか? (これを示すための画像があります: https://docs.google.com/file/d/0B7tBdn5slIFeY2FoSmxESTREQ1k/edit?usp=sharing )
この場合、提示されているモジュールの変更を必要とするすべてのイベントは、メインのコントローラーにリダイレクトする必要がありますか?
それとも、JFrame をアプリケーションのコントローラーと結合して、それらと直接通信する必要がありますか?
基本的に、他のすべてを「管理」するクラスが必要かどうかを知りたいです。私はすでにいくつかの説明と異なる意見を読みましたが、これはもう少し具体的だと思います.
私が自分自身を明確にしたことを願っています(そして、私の説明が私の絵よりも優れていることも願っています:))。
編集: アプリケーションの使用例:
- アプリケーションのライフサイクル全体で 1 つの (唯一の) JFrame。
- メニューは BorderLayout.WEST のように左側に表示されます。
- アプリケーションの現在のモジュールは、BorderLayout.CENTER のように中央に配置されます。
- ユーザーがメニューの 1 つのボタンを押すと、対応するモジュールが BorderLayout.CENTER にロードされます。
メニュー (ビュー) には独自のコントローラーが必要で、このコントローラーは JFrame と通信しますか? そして、JFrameは新しいモジュールをそのレイアウトにロードしますか? それとも、JFrame には独自のコントローラー (または Gilbert Le Blanc が言ったようにモデル) が必要ですか?
これは具体的で理解しやすいように思えるかもしれませんが、デスクトップ アプリケーションについて考えるたびに、これを理解するのに苦労します。