Шаблон MVC в JavaFX с помощью Scene Builder

Я новичок в JavaFX и изо всех сил пытаюсь создать правильную архитектуру MVC, учитывая мои текущие настройки. Я собрал пользовательский интерфейс с помощью Scene Builder и назначил класс 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.
    }
}

Мой профессор попросил, чтобы я дополнительно разделил проблемы и обязанности этого приложения. Контроллер не только управляет состоянием и общается с серверной частью, но и обновляет представление.

Мой первый ответ состоял в том, чтобы позволить классу контроллера стать представлением и создать два других класса для контроллера и модели.

Однако я не знаю, как соединить эти части. Мне никогда не нужно создавать экземпляр представления, поэтому нет экземпляра представления, который я мог бы передать, например, своему контроллеру. Затем я попытался сделать их все синглтонами и просто позволить контроллеру извлекать их во время выполнения, но это дает мне ошибку.

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, используя текущую конфигурацию? Требуется ли другая архитектура?

14
задан IAE 3 June 2012 в 17:30
поделиться