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?

Était-ce utile?

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.

  1. Le modèle est observable (vérifiez!)
  2. La vue consiste à observer le modèle (vérifier!)
  3. 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». alt text
(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é». alt text
(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 :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top