vista mvc modelo example ejemplos controlador model-view-controller design-patterns mvp

model view controller - mvc - ¿Qué es el presentador de Model View?



mvc vs mvp (4)

¿Puede alguien explicar de la manera más simple posible qué es el patrón Model View Presenter? ¿Cuál es la diferencia con Model View Controller? ¿Cuál es el mejor o para qué propósito?


Dolphin Smalltalk solía tener una implementación de MVC pero luego migraron a MVP.

Aquí está el documento técnico que describe lo que hicieron y por qué.

El sistema Taligent de IBM también usó MVP; aquí describen qué y por qué.



Martin Fowler tiene una página sobre patrones de diseño de interfaz de usuario, en la que define y luego habla sobre MVC, MVP y otros patrones.

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

Para resumir las diferencias, los controladores en el MVC tienen más control sobre la interfaz de usuario y manejan los eventos, mientras que un presentador en el MVP es más pasivo y simplemente presenta información a través de la interfaz de usuario.

En general, no hay mucha diferencia, y a menudo la línea entre ellos es borrosa.


Model View Presenter y Model View Controller intentan resolver el mismo problema de "separación de preocupaciones".

La principal diferencia que encontrará es que Model View Controller (MVC) a menudo se implementa con algún acoplamiento entre la vista y algún modelo de algún tipo; por lo tanto, una vista dada tiene el propósito específico de proporcionar una visualización de un objeto determinado (modelo).

En el patrón Presentador de vista de modelo, generalmente se encuentra que el presentador se ocupa de trabajar con el modelo y decide qué información se necesitará para formar algún tipo de visualización.

En este diagrama, las flechas representan dependencias:

Por lo general, se escucha la discusión de este patrón cuando se habla sobre el marco ASP.NET MVC, y se encuentra con información sobre el patrón MVP y su implementación en ASP.NET WebForms. En mi experiencia, es común que se piense que WebForms es en sí mismo un marco modelado por MVP: esto no es cierto. Sin embargo, WebForms hace que sea muy fácil implementar un patrón MVP: su mejor recurso para esto sería investigar la fábrica de software de Web Client del equipo Patterns and Practices:

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

Un gran screencast que cubre el tema: http://www.pnpguidance.net/Screencast/MVPBundleScreencastWCSFModelViewPresenterDesignPattern.aspx