web-dev-qa-db-fra.com

Qu'est-ce que Model View Presenter?

Quelqu'un peut-il expliquer d'une manière aussi simple que possible ce qu'est le modèle Model View Presenter? Quelle est la différence avec Model View Controller? Quel est le meilleur ou dans quel but?

56
bluediapente

Martin Fowler a une page sur les modèles de conception d'interface utilisateur, dans laquelle il définit puis parle de MVC, MVP et d'autres modèles.

http://martinfowler.com/eaaDev/uiArchs.html

Pour résumer les différences, les contrôleurs dans le MVC ont plus de contrôle sur l'interface utilisateur et gèrent les événements, tandis qu'un présentateur dans le MVP est plus passif et présente simplement des informations via l'interface utilisateur.

En général, il n'y a pas beaucoup de différence, et souvent la frontière entre eux est floue.

28
Cameron MacFarland

Model View Presenter et Model View Controller essaient tous les deux de résoudre le même problème de "séparation des préoccupations".

La principale différence que vous constaterez est que le Model View Controller (MVC) est souvent implémenté avec un certain couplage entre la vue et un modèle quelconque - de ce fait, une vue donnée est spécifiquement conçue pour fournir une visualisation d'un objet donné (modèle).

Dans le modèle Model View Presenter, vous constatez généralement que le présentateur s'occupe de travailler avec le modèle et de décider quelles informations en seront nécessaires pour former une sorte de visualisation.

Dans ce diagramme, les flèches représentent les dépendances:

MVC and MVP dependencies

En règle générale, vous entendez cette discussion de modèle apparaître lorsque vous discutez du cadre ASP.NET MVC et rencontrez des informations concernant le modèle MVP et son implémentation dans ASP.NET WebForms. D'après mon expérience, il est courant que WebForms soit en soi un framework à motifs MVP - ce n'est pas vrai. WebForms facilite cependant l'implémentation d'un modèle MVP - votre meilleure ressource pour cela serait d'enquêter sur Web Client Software Factory de l'équipe Patterns and Practices:

Site CodePlex: http://www.codeplex.com/websf

Un excellent screencast couvrant le sujet: http://www.pnpguidance.net/Screencast/MVPBundleScreencastWCSFModelViewPresenterDesignPattern.aspx

58
apiguy

Fowler sépare le MVP en 2 modèles: le présentateur superviseur et la vue passive.
Aviad Ezra a un bon article sur ce sujet http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html .
Je pense que MVP est meilleur pour le bureau, et MVC est pour l'application web, car dans le bureau, le modèle a la capacité de déclencher l'événement

5
Anton Setiawan

Dolphin Smalltalk avait auparavant une implémentation MVC mais ils ont ensuite migré vers MVP.

Voici le document technique qui décrit ce qu'ils ont fait et pourquoi.

Le système Taligent d'IBM a également utilisé MVP - ils décrivent quoi et pourquoi ici .

3
Dafydd Rees