Ajouter des auditeurs lors de l'exécution? - Java MVC
-
20-09-2019 - |
Question
Mon modèle dans mon modèle MVC, génère des composants à l'exécution et les donne à la vue à afficher sur l'écran via la méthode Update () (vous savez, le modèle est l'observable et la vue est l'observateur). Mais j'ai également besoin d'ajouter des auditeurs à ces composants, et le contrôleur a les méthodes d'écoute (car ils disent que le modèle MVC est comme ça) et qu'il n'est pas impliqué dans ce processus de mise à jour. Je ne peux donc pas ajouter les auditeurs lors de l'exécution, mais uniquement dans le constructeur du contrôleur au démarrage.
J'ai une idée, c'est-à-dire le contrôleur l'observateur, puis donne les données à la vue, ainsi que l'ajout des auditeurs. Pensez-vous que ce serait OK?
La solution
Oui, faire du contrôleur votre modèle d'observateur pour lui permettre de mettre à jour la vue s'adapterait définitivement, dans mon esprit, dans MVC Orthodoxie.
Autres conseils
Je pense que vous pouvez avoir des fils croisés.
- Le modèle est observable (vérifiez!)
- La vue consiste à observer le modèle (vérifier!)
- Le contrôleur est lié à la vue (TODO!)
Le n ° 3 signifie que les interactions utilisateur de la vue sont censées invoquer un écouteur enregistré dans la classe de contrôleur, qui met ensuite à jour l'état du modèle.
Ceci est le Swing MVC «classique».
(la source: Sun.com)
Un Swing MVC «modifié» (qui a été recommandé par d'autres réponses sur cette question), le contrôleur a joué le rôle du médiateur.
Dans cette conception, la vue appelle une méthode appropriée sur le contrôleur lorsque l'utilisateur fait des actions. Ensuite, le contrôleur accède au modèle (peut-être le mettre à jour). Enfin, si le modèle est modifié, il informe les auditeurs intéressés (dans ce cas, le contrôleur).
Il s'agit d'un MVC «modifié».
(la source: Sun.com)
La deuxième conception (MVC «modifiée») permet un découplage très évident du modèle et de la vue.
Pour plus d'informations, consultez Cet article À propos de Java Swing MVC. C'est fantastique.
Dans Swing, par exemple, le contrôleur / écouteur d'action est l'observateur de la vue (boutons etc.) et lors de l'invoquer les boutons (c'est-à-dire lorsque la vue change) Le contrôleur entre en jeu et interagit avec le modèle et met à jour la vue à nouveau (avec de nouveaux changements de modèle)
Alors ce que vous avez suggéré à la fin a du sens pour moi :)