私は多くの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固有の説明です。
この甘いフレームワークをチェックして、私はこれに夢中になり、あなたもそうなると思います!
https://github.com/AdamBien/afterburner.fx
これが私の例です:
https://github.com/urosjarc/headhunt
それが役に立てば幸い...