私は開発しようとしているアプリケーションのアーキテクチャを設計する際にいくつかの問題を抱えています。私はJAVAに取り組んでいます。私はJAVA、アーキテクチャ、パターンに関する私の知識を深めたいので、このアプリケーションに取り掛かりました。私は、そうしなければならないように、再利用可能で低結合のアプリケーションを作るためのガイドラインに従っていきたいと思います。アプリケーションには1つのJFrameしかありませんが、内部には複数のJPanelがあり、それぞれがアプリケーションのモジュールを表します。JAVA Swing MVC - メインコントローラー?
質問:JAVA Swingでは、適切なMVCパターンを実装する方法は? 私はそのやり方を理解する方法に苦労しています。
他のすべてのコントローラへの参照を保持するメインコントローラクラスは必要ですか? (これを示す画像があります:https://docs.google.com/file/d/0B7tBdn5slIFeY2FoSmxESTREQ1k/edit?usp=sharing)
この場合、表示されているモジュールを変更する必要があるすべてのイベントをメインコントローラにリダイレクトする必要がありますか?
また、JFrameとアプリケーションのコントローラを結合して直接通信する必要がありますか?
基本的には、他のすべてのものを「管理」するクラスが必要かどうかを知りたいと思います。 私はすでにいくつかの説明と異なる意見を読んでいますが、これはもう少し具体的だと思います。
希望私は自分自身を明確にしました(そして、私の説明が私の絵よりもいいと思っています:))。
EDIT: アプリケーション利用のサンプル:アプリケーションのすべてのライフサイクル全体
- 一つ(一つのみ)のJFrame。
- メニューはBorderLayout.WESTのように左側にあります。
- アプリケーションの現在のモジュールは、BorderLayout.CENTERのように中央になります。
- ユーザーがメニューの1つのボタンを押すと、対応するモジュールがBorderLayout.CENTERにロードされます。
メニュー(表示)に独自のコントローラがあり、このコントローラがJFrameと通信する必要がありますか?そして、JFrameは新しいモジュールをLayoutにロードしますか?または、JFrameに独自のコントローラ(またはモデル、Gilbert Le Blancが述べたように)が必要ですか?
私はこれが特定の、または分かりやすいと思われるかもしれないが、私はデスクトップアプリケーションを考えるたびに、私はこれを理解するのに苦労している。
ありがとうございました。私がゴミ箱への答えに述べたように、私は自分の問題をより具体的に説明するために質問を更新しました。しかし、あなたの答えはすでに私にもう少し研究をさせてくれました。私は、この問題を素早く分類すると思います。リンクありがとうございます! –
あなたの編集した質問を読んだ。 GUIコントローラはGUIモデルとは別のものです。GUIモデルには、GUIを構成するすべてのデータ要素が含まれています。 JTextFieldsの文字列、JTablesのDefaultTableModelsです。 –
@ GilbertLeBlancの例は、SwingアプリケーションがSwingコンポーネントで暗黙のMVCパターンをどのように活用できるかを示しています。 'JTabbedPane'は私が提案した' CardLayout'の良い代替手段です。 – trashgod