こんにちはプログラマーと建築家!
私はここに新しいと私は私の英語が恐ろしいことができると思う! :-D だから...私に注意してください...してください。JavaFX、FXMLおよびコントローラ:シーンの切り替え、シーンデータの維持
私は、JavaFX、FXML、シーンを切り替えるさまざまな方法について、アーキテクチャ上の質問をしています。 私は個人的なソリューションを使用していますが、それはアクセシビリティソリューションかどうかを知る必要がありますアーキテクチャレベル)。
私の解決策を説明しようとします。
Observer Patternの「逆数」の一種を使用しました。代わりに、各オブザーバブルに対して多くのオブザーバを使用し、1人のオブザーバ(特定のクラス)と多くのオブザーバブル(すべてのコントローラ)を使用しました。
シーンを変更するときは、現在のシーンのコントローラがObserverにそのことを通知します。 Observerは古いシーンを削除し、新しいシーンを読み込みます。
いくつかの詳細。
java.util.Observerを実装するSceneObserverという名前のクラスを作成しました。ルート要素広告用としてのみAnchorPanelで新しいシーンを作成し、すべての私のコントローラ
- レジスタSceneObserver:私は順番にでSceneObserverを使用
ルート要素に追加するroot.getChildren()。add()メソッドFXML - FXMLLoader用の特定のコントローラを設定しました(FXML内では "fx:controller"を使用していません)
私のすべてのコントローラはjava.util.Observableを拡張しています(これは一例です)。
シーンで特定のタイプの状況が発生し、シーンを切り替える必要がある場合、SceneObserverに変更(オブザーバーパターン)を通知し、SceneObserverは古いシーンを破棄して新しいシーンを読み込みます。 つまり、私はすべてのコントローラ(Observe Patternの逆)を観察するために1人のオブザーバのみを使用しています。
すべての作品が、これでは不十分だと私は知っています!
したがって、質問は次のとおりです。アーキテクチャレベルでは、これは受け入れやすいソリューションですか?
私は知っている、これは唯一のものではありませんし、確かに他のより良い方法がありますが、これについてはどうですか?
なぜこのソリューションを使用しましたか?
さて、二つの理由:
- 負荷のみ必要FXML(より迅速なアプリケーション)
- 休暇コントローラはすべてに
感謝をデカップリングして...私の英語:-(
ために残念