私はJavaFXを初めて使用し、現在の設定では適切なMVCアーキテクチャを作成するのに苦労しています。Scene Builderを使用してUIを一緒にクリックし、Controllerクラスを指定しました。
起動:
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
}
}
また、Controllerクラスには残りのコードが含まれています。
public class AccommodationPortalView implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resources) {
// Work here.
}
}
私の教授は、このアプリケーションの懸念と責任をさらに分離するように求めました。コントローラは、状態を管理してバックエンドと通信するだけでなく、ビューを更新します。
私の最初の応答は、ControllerクラスをViewにし、ControllerとModel用に他の2つのクラスを作成することでした。
しかし、私はこれらの部品をどのように接続するか途方に暮れています。ビューをインスタンス化する必要がないため、たとえば、コントローラーに渡すことができるビューインスタンスはありません。次に、それらをすべてシングルトンにして、実行時にコントローラーにフェッチさせようとしましたが、エラーが発生します。
public class Portal extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("PortalUI.fxml"));
stage.setTitle("Portal");
stage.setScene(new Scene(root));
stage.show();
// Controller gets a View and Model instance in initialize();
// Error: Instantiation and Runtime Exception...
PortalController.INSTANCE.initialize();
}
}
現在の構成を使用してMVCパターンを適切に設定するにはどうすればよいですか?別のアーキテクチャが必要ですか?