私はSwingアプリケーションの構造化にMVCを使いたいが、矛盾があるようだ。建築用MVCとスイング
私がMVCを理解しているので、コントローラは入力を処理してモデルを更新する必要があります。モデルは、ビューがどれであるかをオブザーバに通知する必要があります。
私は、Swingがビューのすべて一部である二つの問題
- を持っています。コンポーネントに独自のモデルがあるという事実は実装の詳細です。スイング固有のコードをコントローラー/モデルから外しておきたいのですが?
- 私のコントローラはユーザによってトリガされたイベントを受信する必要がありますが、これらはビュー内にあるスイングコンポーネントから来ており、コントローラはそのビューについて知るべきではありません。
これまで何度もこの問題が解決されていますが、まともなサイズのMVCベースのスイングアプリの実際の例は見つかりません。
アップデート - 私はMVCは、直接に応じるいない何
を忘れてしまった問題は、アプリケーションの階層内のさまざまなMVCコンポーネントの構造です。たとえば、メインディスプレイには「販売」タブと「購入」タブがあり、それぞれには「新しい」パネルと「クエリ」パネルがあります。その上に、要求に応じて(場合によっては複数の)ウィンドウを作成する「選択されたものを修正する」ボタンがあるかもしれない。
何かが要求に応じて、これらのサブコンポーネントのモデル、ビュー、コントローラを作成する必要があります。コントローラやモデルは、どのビューを作成するのか分からず、アプリケーションロジックであり、イベント(コントローラのジョブ)に応答しているのでビューではいけないので、コントローラであることはできません。
回答がありますか?
a)スイングに関する限り、つまりコンポーネントレベルです。私は自分のアプリケーションにMVCアーキテクチャを使用することを話しています。 b)実際にスイングは厳密にはMVCではなく、コンポーネントはコントローラとビューであり、UIDelegateを使用します。 – Draemon
これは本当ですが、a)に関する限り、私は混乱しています。 –
JButtonクラスに描画ロジックのすべてが含まれていないことを意味しています(私はビューと見なされます) –