Je suis aux prises avec le concept MVC utilisant javaFX. Je construis une application javaFX en utilisant des fichiers fxml.
Chaque contrôleur FXM est associé à un contrôleur, mais je ne pense pas que ce contrôleur en soit un car le modèle MVC indique l'état Je le considère comme une sorte de ViewController, qui contient des références à des objets XML (boutons, volets, etc.).
Mon problème est: où est exactement la différence entre ce "ViewController" et le vrai "Controller". Quel objet doit faire quelles choses? Où puis-je placer par exemple actionListeners?
Réflexions sur MVC
MVC est un modèle assez mal défini qui est ouvert à des interprétations (souvent quelque peu vagues) de ce que chacun des éléments de MVC représente (en particulier le contrôleur). Il y a une excellente discussion sur l'architecture MVC en ce qui concerne les boîtes à outils d'interface graphique de Martin Fowler.
On Design Patterns et FXML
Le traitement basé sur FXML JavaFX de base est conçu pour être davantage une boîte à outils que un cadre de développement complet. L'idée étant que d'autres frameworks pourraient être superposés à JavaFX et FXML et que les implémentations JavaFX/FXML sous-jacentes et leurs contrôleurs ne poussent aucun type d'agenda ni de contrainte architecturale sur les frameworks de niveau supérieur.
Il en résulte une analogie et une mise en correspondance délibérément lâches entre le traitement basé sur FXML principal et leurs contrôleurs et une architecture MVC.
Voir (JavaFX et MVP - un catalogue de modèles de conception } pour une discussion plus approfondie.
Envisagez d'utiliser un cadre de niveau supérieur
Vous pourriez tirer avantage de l’adoption d’un framework JavaFX "basé sur l’opinion", tel que afterburner.fx , qui utilise des contrôleurs et FXML mais fournit un peu plus d’un framework structuré rigide. Afterburner.fx suit un modèle MVP . Bien que Afterburner.fx offre davantage de fonctionnalités et de structure que JavaFX + FXML de base, il le fait de manière minimale en ajoutant quelques classes et API supplémentaires dont vous avez besoin pour apprendre à les utiliser.