2010-04-18 4 views
5

Je lis beaucoup d'articles sur l'architecture MVC, mais je suis toujours confus.Implémentation correcte de l'architecture MVC

  • Quel diagramme est correct?
  • Existe-t-il même une implémentation correcte de l'architecture MVC? Puis-je utiliser une implémentation différente de l'architecture MVC?

Schéma 1

Diagram 1 http://img219.imageshack.us/img219/4576/screenshot20100418at213.png

Schéma 2

Diagram 2 http://img38.imageshack.us/img38/4576/screenshot20100418at213.png

Schéma 3

Diagram 3 http://img526.imageshack.us/img526/3900/screenshot20100418at214.png

+2

Que représentent les flèches? – mkorpela

+0

peut-être que les flèches signifient dépendance/visibilité? –

Répondre

8

MVC peut être compris par la pensée des responsabilités:

Le point de vue n'a pas le droit de changer l'état du modèle directement - que par le contrôleur. La vue peut toujours avoir un accès direct au modèle, mais seulement pour l'affichage (ou en ayant une copie qui n'est pas le modèle officiel). Le modèle devrait vivre dans son propre univers et ne pas avoir de référence aux contrôleurs ou aux vues.

Le contrôleur contrôle l'état et l'accès au modèle.

+0

Ceci est la bonne réponse. –

+0

Dans la réalité Modèle doit toujours avoir une référence au contrôleur, peu importe si via un protocole réseau ou directement par C++/JAVA pointeur/référence. Il serait inaccessible sinon ... BTW: La plupart des implémentations MVC d'aujourd'hui (Android, Windows WPF, Qt) ne sont pas des MVC purs. Je crois que c'est principalement pour des raisons de performance. Nous pouvons parler d'un MVC pur uniquement s'il n'y a rien d'autre qu'un accès indirect aux données du modèle - généralement via des messages XML. – vitakot

+1

@vitakot: Je ne comprends pas pourquoi vous pensez que le modèle aurait besoin de savoir quoi que ce soit sur les autres composants - Vous pouvez accéder au modèle sans qu'il ait de référence à vous .. – mkorpela

0

Ma stratégie pour l'apprentissage de bonnes techniques MVC est de trouver quelqu'un qui savait et poser beaucoup de questions. Demander à un groupe d'entre nous qui ne connaissent pas vos exigences, vos intentions ou vos idées ne fait pas beaucoup de bien.

Je suis d'avis que le diagramme 1 serait considéré comme le «meilleur» diagramme, mais sans connaître votre situation unique, il serait préférable d'expliquer vos besoins à quelqu'un d'autre qui connaît vos besoins et l'architecture MVC.

1

Certainement pas Diagramme 3! Le diagramme 1 est OK. Je pense que le meilleur est en gros le Diagramme 2 avec une flèche de Controller à View.

En supposant que vous demandez dans le contexte des applications web, voici ce que je pense un bon flux MVC ressemble:

  1. Lorsqu'une demande web vient, il est l'un des 2 types.

    type A - ceci est une simple demande qui obtient directement mis en correspondance avec une vue, donc aucun contrôleur est impliqué

    type B - c'est la demande qui correspond à un contrôleur

  2. Pour les types A et B une vue lit directement les données des modèles directement

  3. S'il s'agit d'une requête de type B, le contrôleur lit/met à jour les modèles et, une fois terminé, demande à l'infrastructure MVC de renvoyer une vue au client. La vue lit les modèles de mise à jour et les restitue au client.

Cette approche est prise en charge par le Induction MVC framework.

Espérons que cela aide.

+0

Merci, cela m'a vraiment aidé. –

Questions connexes