2010-02-25 6 views
0

Dans un sens générique du MVC, la relation de la vue et des contrôleurs est-elle généralement supposée être M: 1? Autrement dit, de nombreuses vues utilisent le même contrôleur? Mais une vue n'utilisera pas beaucoup de contrôleurs différents? Ou, devrais-je être en mesure d'échanger une vue avec un contrôleur et que tout fonctionne? Je vois une dépendance plutôt étroite entre les deux en ce moment et donc cela ne fonctionnerait pas avec ma disposition actuelle ...MVC: relations de cardinalité des vues et des contrôleurs

J'essaie de concevoir quelque chose pour un projet de classe, et je ne suis pas sûr de savoir comment organiser/concevoir mes vues et contrôleurs.

Mise à jour: Les réponses que j'ai reçues jusqu'ici ont été utiles mais non définitives. Permet d'élargir ma question un peu. Rétrospectivement, un aspect important est que le modèle peut changer (modèle de stratégie *) Dans un cas, le modèle peut créer une base de données. Dans un autre, il peut lire de la base de données. Mon objectif de conception d'origine était d'obtenir une vue uniforme (quoique simple) en place qui serait capable de traiter tous les modèles.

* J'ai lu (here) que le contrôleur peut être considéré comme une implémentation de stratégie. Mon modèle sera implémenté de manière similaire mais séparée.

Voici un diagramme de classes rapide (incomplète) du concept (compte tenu de l'information mise à jour):

Class Diagram of my MVC implementation concept http://theopensourceu.com/wp-content/uploads/2010/02/MVC-2334703.png

Répondre

1

Une vue ne doit et ne pas savoir quoi que ce soit sur les contrôleurs. À cet égard, je dirais, la relation est inexistante.

Une vue reçoit un modèle et l'affiche. Qui a préparé ce modèle est en principe hors de propos.

Bien sûr, dans la pratique, les limites sont parfois fondues. Pour une raison quelconque, comme la simplification des dépendances de code, une vue peut parfois savoir quelque chose sur le contrôleur qui a brûlé le feu. Mais si vous parlez d'une discussion conceptuelle pure, alors non, il n'y a pas de lien direct entre un contrôleur et une vue. Au contraire, ils communiquent par intermédiaire, c'est-à-dire un modèle.

  ControllerX 
-------------------------------- 
Model1  Model2  Model3 
    |   |   | 
View1  View2  View3 

La même vue peut en principe être émise par plusieurs contrôleurs. Si un contrôleur est capable d'instancier un modèle, alors c'est plutôt efficace.

0

Mon point de vue sur la structure MVC est la suivante:

Le contrôleur - la partie la plus importante. Si vous deviez utiliser un seul morceau de MVC, ce serait le cas. J'ai mes contrôleurs appeler des données à partir de modèles, puis passer les données (et tout autre bits dont j'ai besoin) dans une vue (ou des vues imbriquées) qui est ensuite envoyé à l'utilisateur.

Cela dit, un contrôleur peut utiliser de nombreux modèles et vues, mais pas l'inverse.

Questions connexes