web-dev-qa-db-ja.com

javaFXを使用したMVC

私はjavaFXを使用してMVCコンセプトに苦労しています。 fxmlファイルを使用してjavaFXアプリケーションを構築しています。

各fxmlファイルにはコントローラーが割り当てられていますが、MVCパターンに示されているように、このコントローラーは1つではないと思います。私はそれをfxmlオブジェクト(ボタン、ペインなど)への参照を保持するある種のViewControllerのように考えています。

私の問題は、この「ViewController」と実際の「Controller」の違いはどこにあるのかです。どのオブジェクトが何をすべきか?どこに設定しますか? actionListeners?

21
priojewo

MVCの考え方

MVCは、大まかに定義されたパターンであり、MVCの各要素(特にコントローラー)が何を表すのか(しばしば漠然と解釈されます)の可能性があります。 Martin FowlerによるGUIツールキットに関して、MVCアーキテクチャの素晴らしい 議論 があります。

デザインパターンとFXMLについて

JavaFXコアFXMLベースの処理は、完全な開発フレームワークではなく、ツールキットとして構築されています。他のフレームワークをJavaFXとFXML、基盤となるJavaFX/FXML実装、およびそれらのコントローラーの上に重ねることができるという考えは、上位レベルのフレームワークにいかなる種類の議題やアーキテクチャ上の制約もプッシュしないということです。

その結果、中核となるFXMLベースの処理とそのコントローラーとMVCアーキテクチャーとの意図的に緩やかな類似性とマッピングがあります。

詳細については、 JavaFXとMVP –設計パターンのスモール/ を参照してください。

より高いレベルのフレームワークの使用を検討してください

afterburner.fx などの「意見のある」JavaFXフレームワークを採用すると、コントローラーとFXMLを利用しますが、もう少し厳密な構造化フレームワークが提供されます。 Afterburner.fxは、 Model View Presenter(MVP)モデル に従います。 Afterburner.fxは、プレーンコアのJavaFX + FXMLよりも多くの機能と構造を提供しますが、それを使用するために学習する必要があるいくつかの追加のクラスとAPIを追加することにより、最小限の方法で提供します。

18
jewelsea

カスタム仕立てのパターンでJRebirthを試すことができます:wB-CS-Mvc

これは2レベルのMVCパターンで、最初のMVC(アプリケーションレベル)はCSMで、2番目のパターンはMvc自体(uiレベル)です。

  • メッセージングおよび非同期内部イベント処理のためのWave
  • コンポーネントに共通コードを追加する動作(C | S | M)
  • アプリケーションコマンドを管理するコマンド(再利用可能なコード)
  • スレッドプールへの長いサービスを処理するサービス
  • UIのモデルを管理するためのモデル
  • UIを作成するためのビュー
  • ユーザーイベントを処理するコントローラー

詳細については、JRebirthツアーアプリケーションを実行してください(Java 8が必要です)。

http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar

Java -jar JRebirthTour-3.0.0.jar

デモアプリケーションを実行することもできます。

http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar

Java -jar JRebirthDemo-8.5.0.jar

またはスライドを参照(少し古い): http://fr.slideshare.net/SbastienBordes/javafx-unleashed-with-jrebirth-application-framework

1
Sébastien B.