2010-05-26 3 views
2

Mon application suit le modèle de conception MVC. Le problème que je continue de rencontrer est d'avoir besoin d'appeler des méthodes dans une classe Controller en dehors de cette classe Controller (par exemple, une classe View veut appeler une méthode Controller, ou une classe Manager veut appeler une méthode Controller). L'appel de méthodes Controller de cette manière est-il autorisé dans MVC? Si c'est permis, quelle est la bonne façon de le faire?MVC - Méthodes de contrôleur d'appel

Selon la version de MVC que je suis (il semble y avoir tellement de versions différentes), la vue connaît le modèle et le contrôleur connaît la vue. En procédant ainsi, je ne peux pas accéder au contrôleur. Voici le meilleur site que j'ai trouvé et celui qui décrit la version de MVC que je suis: http://leepoint.net/notes-java/GUI/structure/40mvc.html. Le bloc de code du programme principal montre vraiment comment cela fonctionne.

Merci pour toute réponse.

Répondre

1

regarder de plus près ce paragraphe de l'article que vous avez lié à:

Voir cette vue ne connaît pas le contrôleur, sauf qu'il fournit des méthodes d'enregistrement des auditeurs d'un contrôleur. D'autres organisations sont possibles (par exemple, les écouteurs du Contrôleur sont des variables non-privées pouvant être référencées par la Vue, la Vue appelle le Contrôleur pour obtenir les écouteurs, les méthodes Afficher les appels dans le Contrôleur pour traiter les actions, ...).

Vous avez le modèle d'observateur ici entre la vue et le contrôleur. MVC n'est pas un modèle unique en soi, mais au moins deux combinés.

Une façon de maîtriser la communication View/Controller est d'utiliser des événements. La vue déclenche des événements sur certaines actions de l'utilisateur (sans savoir nécessairement qui pourrait les gérer.) Le contrôleur traite ces événements et agit en conséquence.

+0

Oui, j'utilise les événements comme vous le dites, mais ce qui m'intéresse le plus, c'est "les méthodes de visualisation des appels dans le contrôleur pour traiter les actions". L'article dit que c'est possible dans "d'autres organisations" de MVC. Mais comment? Je n'ai pas accès aux contrôleurs dans la vue (ou ailleurs). – JT703

+0

Les événements peuvent également être utilisés pour traiter des actions. Mais, pour garder les choses plus synchrones mais toujours découplées, vous pouvez définir une interface que le contrôleur implémenterait. L'interface serait ensuite transmise à la vue à un certain point d'initialisation. La vue appelle alors le contrôleur indirectement via cette interface. –

Questions connexes