MVC с javaFX
Я борюсь с концепцией MVC с помощью javaFX. Я создаю приложение javaFX, используя файлы fxml.
Каждый файл fxml имеет назначенный контроллер, но я не думаю, что этот контроллер является одним из состояний шаблона MVC. Я думаю о нем как о каком-то ViewController, который содержит ссылки на объекты fxml (кнопки, панели и т.д.).
Моя проблема: где именно разница между этим "ViewController" и реальным "контроллером". Какой предмет должен делать что-то? Где я устанавливаю, например. actionListeners?
Ответы
Ответ 1
Мысли о MVC
MVC - довольно слабо определенный шаблон, который открыт для (часто несколько неопределенных) интерпретаций того, что означает каждая из вещей в MVC (особенно контроллер). Существует большое обсуждение архитектуры MVC в отношении инструментальных средств GUI от Мартина Фаулера.
На шаблонах проектирования и FXML
Явная обработка на основе FXML на основе JavaFX построена скорее как набор инструментов, а не полная структура разработки. Идея заключалась в том, что другие фреймворки могут быть наложены поверх JavaFX и FXML и базовые реализации JavaFX/FXML, а контроллеры для них не будут вызывать каких-либо задач или архитектурных ограничений в рамках более высокого уровня.
В результате есть намеренно потерянная аналогия и отображение основной обработки на основе FXML и их контроллеров для архитектуры MVC.
См. JavaFX и MVP - образец шаблонов дизайна для дальнейшего обсуждения.
Рассмотрите возможность использования структуры более высокого уровня
Вам может быть выгодно использовать "упрямую" инфраструктуру JavaFX, такую как afterburner.fx, которая использует контроллеры и FXML, но обеспечивает немного более жесткую структурированную структуру. Afterburner.fx следует модели Model View Presenter (MVP). Хотя Afterburner.fx предоставляет больше функциональности и структуры, чем простой JavaFX + FXML, он делает это минимально, добавив несколько дополнительных классов и API, которые вам нужно научиться использовать.
Ответ 2
Вы можете попробовать JRebirth с его индивидуальным шаблоном:
Wb-CS-Mvc
Это двухуровневый шаблон MVC, первый MVC (уровень приложения) - это CSM, а второй - сам Mvc (ui-level).
- Волна для обмена сообщениями и асинхронного управления внутренними событиями
- Поведение для добавления общего кода к любому компоненту (C | S | M)
- Команда для управления командами приложений (код многократного использования)
- Сервис для обработки некоторого длительного обслуживания в пуле потоков
- Модель для управления моделью вашего пользовательского интерфейса
- Просмотр для создания пользовательского интерфейса
- Контроллеры для обработки пользовательских событий
Вы можете запустить приложение JRebirth Tour, чтобы узнать больше (требуется Java 8):
http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar
java -jar JRebirthTour-3.0.0.jar
Вы также можете запустить демонстрационное приложение:
http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar
java -jar JRebirthDemo-8.5.0.jar
или просматривать слайды (слегка устаревшие):
http://fr.slideshare.net/SbastienBordes/javafx-unleashed-with-jrebirth-application-framework