46 votes

Qu'est-ce que MVC et quels sont ses avantages?

J'ai trouvé Ce que sont le titre de mvp et mvc et quelle est la différence , mais il n'a pas vraiment répondre à cette question.

J'ai récemment commencé à utiliser MVC, car il fait partie de la cadre que moi et mon travail-partenaire allez utiliser. Nous l'avons choisi parce qu'il semblait facile et processus séparés de l'affichage, il y a des avantages en plus de ce que nous ne connaissons pas et pourrait être absent dehors sur?

Pros

  1. L'affichage et le Traitement sont séparés


Cons

  1. Aucun à ce jour

46voto

Sören Kuklau Points 9445

MVC est la séparation de la model, view et controller - rien de plus, rien de moins. C'est tout simplement un paradigme, un idéal que vous devriez avoir à l'arrière de votre esprit lors de la conception des classes. Éviter de mélanger du code à partir de trois catégories en une seule classe.

Par exemple, un tableau de grille de la vue devrait évidemment de présenter des données une fois montré, il ne devrait pas avoir de code sur l'endroit où récupérer les données à partir de, ou à ce que sa structure native (le modèle), c'est comme. De même, alors qu'il peut avoir une fonction de la somme d'une colonne, la sommation est censé arriver dans le contrôleur.

Un "enregistrer le fichier "dialogue" (vue) en fin de compte passe le chemin, une fois choisi par l'utilisateur, sur le contrôleur, qui demande ensuite le modèle pour les données, et ne les économies réelles.

Cette séparation des responsabilités permet de la souplesse en bas de la route. Par exemple, parce que la vue n'est pas le modèle sous-jacent, qui prend en charge plusieurs formats de fichiers est plus facile: il suffit d'ajouter un modèle de sous-classe pour chaque.

13voto

Quibblesome Points 14441

La séparation des préoccupations est la biggy.

Être capable de taquiner ces composants à part rend le code plus facile à réutiliser et à tester de façon indépendante. Si vous ne savez pas vraiment ce que MVC est, être prudent au sujet d'essayer de comprendre les opinions des gens comme il ya encore certains conflits à propos de ce que le "Modèle" est (si c'est le business objects/DataSets/DataTables ou s'il représente la sous-jacentes de la couche de service).

J'ai vu toutes sortes de mises en œuvre qui s'appellent eux-mêmes MVC, mais ne sont pas exactement et que les commentaires dans le Jeff article montrent MVC est un point litigieux que je ne pense pas que les développeurs ne sera jamais entièrement d'accord sur.

Un bon tour de tous les différents MVC types est disponible ici.

6voto

OysterD Points 2698

Jeff a écrit un article à ce sujet. Sinon, j'ai trouvé des documents utiles sur le site Web d'Apple, dans des didacticiels Cocoa ( celui-ci par exemple).

3voto

Rob Cooper Points 15945

Je pense qu'un autre avantage de l'utilisation du modèle MVC, c'est qu'il ouvre les portes à d'autres approches à la conception, tels que MVP/Présentateur de la première et de beaucoup d'autres MV* modèles.

Sans cette ségrégation de la conception de "composants" l'adoption de ces techniques serait beaucoup plus difficile.

Je pense qu'il l'aide à faire de votre code encore plus basé sur l'interface.. Non seulement au sein de chaque projet, mais vous pouvez presque commencer à développer des "points de vue", ce qui signifie que vous pouvez modèle beaucoup plus de "grunt" code utilisé dans vos applications. Par exemple, un très abstrait "affichage des données" qui prend tout simplement un tas de données et le lance à une commune de la grille de mise en page.

Edit:

Si je me souviens bien, c'est un très bon podcast sur MV* modèles (écouté il y a un moment!)

1voto

Chris Blackwell Points 5514

Un inconvénient auquel je peux penser est si vous avez besoin d’un accès très rapide à vos données dans votre vue (par exemple, des données d’animation de jeu telles que les positions des os). Il est très inefficace de conserver une couche de séparation dans ce cas.

Sinon, pour la plupart des applications qui reposent davantage sur les données que sur les graphiques, cela semble être un moyen logique de gérer une interface utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X