web-dev-qa-db-ja.com

JavaFX内の優れたデザインパターン-MVC?

私は多くのJavaFXを使用しており、技術的な側面に精通しています。さて、何百ものビューを持つ非常に大規模なアプリケーションに進出するとき、私はしっかりとした設計から確実に始めたいと思います。これは純粋にクライアントアプリケーションであり、バックエンドは別の場所にあります。

これは、MDI(Multiple Document Interface)アプリケーション)であることにも言及します。これは、複雑さを悪化させるだけです。

次の怒りを読みたくない場合は、tl; drにスキップしてください。

私の考えでは、コントローラーは互いに通信すべきではありません。システムの各部分はモジュール式で、他の部分を認識せず、いくつかのマスターコントローラーがそれらすべてをつなぎ合わせる必要があります。これがJavaFX内でどのように実現可能かはわかりません。これは、MDI(これをMDIRootと呼びます)内にFXMLビュー/コントローラーのインスタンスが多数存在するという事実によって悪化します。

この例 [〜#〜]ここ[〜#〜] は私が一番好きなものですが、明らかな問題がいくつかあります。これの主な問題は例にあり、すべてのコントローラーがプログラムの実行中に存在します。しかし、セミコンプレックスアプリケーションの多くにも、常に存在するわけではないFXMLコントローラが含まれます。それでは、他のコントローラーのMainControllerインスタンスをどのように初期化しますか?他の明らかな問題は、私の場合、コントローラーのインスタンスが多数存在する可能性があることです。ですから、MainControllerには各コントローラーのリストが必要です。 3番目の問題は、MainControllerがプロジェクトのルートのFXMLコントローラーにすぎないことです。私の場合(MDI)には独自のロジックがあります。 「メイン」コントローラーになる価値があるものは、それ自体のロジックから完全に独立していて、他のコントローラーのカプセル化に完全に焦点を当てるべきではないでしょうか。


tl; dr:MVC(またはMVP、または実際に推奨されるもの)をJavaFXの大規模アプリケーションに効果的に使用する方法を見つけるのに問題があります。MDI JavaFXのアプリケーション。例や入力がある場合コードサンプルは、Nice、またはアプリケーションが大きくなったときにコントローラが互いに通信しないという1つの要件で、Niceデザインを実装する方法のJavaFX固有の説明です。

6
skex

この甘いフレームワークをチェックして、私はこれに夢中になり、あなたもそうなると思います!

https://github.com/AdamBien/afterburner.fx

これが私の例です:

https://github.com/urosjarc/headhunt

それが役に立てば幸い...

1
user157581