Si nous cherchons dans Google en utilisant la phrase "Quelle est la différence entre les modèles de conception MVC, MVP et MVVM", il se peut que nous n'obtenions que peu d'URL décrivant la différence entre les modèles de conception MVC MVP et MVVM théoriquement comme :
MVP
À utiliser dans des situations où la liaison via un contexte de données n'est pas possible. Windows Forms en est un parfait exemple. Afin de séparer la vue du modèle, un présentateur est nécessaire. La vue ne pouvant pas être directement liée au présentateur, les informations doivent être transmises à la vue via une interface (IView).
MVVM
Utilisez-le dans des situations où la liaison via un contexte de données est possible. Pourquoi? Les différentes interfaces IView pour chaque vue sont supprimées, ce qui signifie moins de code à maintenir. Parmi les exemples de MVVM possibles, citons les projets WPF et javascript utilisant Knockout.
MVC
À utiliser dans des situations où la connexion entre la vue et le reste du programme n’est pas toujours disponible (et que vous ne pouvez pas utiliser efficacement MVVM ou MVP). Cela décrit clairement la situation dans laquelle une API Web est séparée des données envoyées aux navigateurs clients. ASP.NET MVC de Microsoft est un excellent outil pour gérer de telles situations et fournit une infrastructure MVC très claire
Mais je n'ai trouvé aucun article traitant de la différence théorique avec un exemple de code.
Ce serait vraiment bien si je recevais un article décrivant la différence entre ces 3 modèles de conception (MVC, MVP et MVVM) et le code.
Je voudrais mettre la main sur le code source de 3 applications similaires CRUD qui ont été implémentées par ces trois modèles de conception (MVC, MVP & MVVM). Pour que je puisse parcourir le code et comprendre comment on doit écrire du code pour ces trois modèles de conception (MVC, MVP & MVVM).
Donc, si un tel article existe et explique en quoi le code aurait une apparence différente pour ces 3 modèles de conception (MVC, MVP et MVVM), veuillez me rediriger vers cet article.
This devrait être un bon débutant. En réalité, la "plateforme" de votre choix joue également un rôle important dans la manière dont vous utilisez ces modèles. Par exemple, MVVM est naturellement adapté à WPF, tandis que MVP fonctionne bien avec Windows Forms. ASP.Net MVC parle pour lui-même.
Certaines différences fondamentales peuvent être écrites en bref:
MVC:
MVC traditionnel est où il y a un
MVP:
Semblable au MVC traditionnel mais Controller est remplacé par Presenter. Mais contrairement à Controller, le présentateur est également responsable de la modification de la vue. La vue n'appelle généralement pas le présentateur.
MVVM
La différence ici est la présence de View Model. C'est en quelque sorte une implémentation de Observer Design Pattern, dans lequel les modifications du modèle sont également représentées dans la vue, par la machine virtuelle. Exemple: si un curseur est modifié, non seulement le modèle est mis à jour, mais les données qui peuvent être du texte, qui sont affichées dans la vue, sont également mises à jour. Il existe donc une liaison de données bidirectionnelle.
Grande explication à partir du lien: http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
Regardons d'abord MVC
L'entrée est d'abord dirigée vers le contrôleur, pas vers la vue. Cette entrée peut provenir d'un utilisateur interagissant avec une page, mais peut-être aussi simplement en entrant une URL spécifique dans un navigateur. Dans les deux cas, c'est un contrôleur qui est interfacé avec pour lancer certaines fonctionnalités.
Il existe une relation plusieurs-à-un entre le contrôleur et la vue. En effet, un seul contrôleur peut sélectionner différentes vues à restituer en fonction de l’opération en cours d’exécution.
Il y a une flèche à sens unique du contrôleur à la vue. En effet, la vue n’a aucune connaissance ni référence du contrôleur.
Le contrôleur retransmet le modèle. Il y a donc des informations entre la vue et le modèle attendu, mais pas le contrôleur qui le sert.
MVP - Présentateur de vue modèle
Voyons maintenant le modèle MVP. Cela ressemble beaucoup à MVC, à part quelques distinctions clés:
La saisie commence par la vue, pas par le présentateur.
Il existe un mappage univoque entre la vue et le présentateur associé.
La vue contient une référence à l'animateur. Le présentateur réagit également aux événements déclenchés à partir de la vue. Il est donc informé de la vue à laquelle il est associé.
Le présentateur met à jour la vue en fonction des actions demandées qu'il effectue sur le modèle, mais la vue n'est pas compatible avec le modèle.
MVVM - Vue Modèle Vue Modèle
Donc, avec les modèles MVC et MVP devant nous, examinons le modèle MVVM et voyons quelles sont les différences qu’il contient:
La saisie commence par la vue, pas le modèle de vue.
Bien que la vue contienne une référence au modèle de vue, le modèle de vue ne contient aucune information sur la vue. C'est pourquoi il est possible d'avoir un mappage un-à-plusieurs entre différentes vues et un modèle de vue… même entre les technologies. Par exemple, une vue WPF et une vue Silverlight peuvent partager le même modèle de vue.