¿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?¿Qué es Model View Presenter?
Respuesta
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 de la MVC tienen un mayor control sobre la interfaz de usuario, y controlar los eventos, mientras que un presentador en el MVP es más pasivo, y apenas 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 un acoplamiento entre la vista y algún modelo; por lo tanto, una vista determinada está específicamente diseñada para proporcionar una visualización de un objeto dado (modelo).
En el patrón de modelo de vista de modelo, generalmente, el presentador se ocupa de trabajar con el modelo y decide qué información se necesita para formar algún tipo de visualización.
En este diagrama, las flechas representan dependencias:
Normalmente se escucha esta discusión patrón de llegar al discutir el marco ASP.NET MVC, y nos hemos encontrado 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. WebForms embargo, no hacen que sea muy fácil de poner en práctica un patrón MVP - su mejor recurso para esto sería investigar la Fábrica de Software de cliente Web a partir de los patrones y las prácticas del equipo:
CodePlex sitio: http://www.codeplex.com/websf
Una gran cubierta screencast el tema: http://www.pnpguidance.net/Screencast/MVPBundleScreencastWCSFModelViewPresenterDesignPattern.aspx
No estoy seguro de que esas flechas de dependencia sean correctas. En MVC, ¿por qué la Vista tiene una dependencia en el Modelo? –
Sin duda * no *, sin embargo, esta es la implementación más común.Por ejemplo, si utiliza ASP.NET MVC, la mejor práctica es hacer que su "vista" dependa de un tipo (creando una vista fuertemente tipada). Las implementaciones típicas de MVC envían un modelo a una vista, luego dejan que la vista decida qué hacer con él (creando así una dependencia), mientras que en MVP, la Vista literalmente le preguntará al presentador "¿Qué datos debo poner en este cuadro de texto?" – apiguy
Hay una muy buena implementación de este patrón http://www.mvpwebforms.com – hakan
Dolphin Smalltalk solía tener una implementación de MVC pero luego migraron a MVP.
Aquí está the technical paper que describe lo que hicieron y por qué.
El sistema Taligent de IBM también usó MVP - describen qué y por qué here.
Fowler separa MVP en 2 patrones: Supervising Presenter y Passive View.
Aviad Ezra tiene un buen artículo sobre este tema http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html.
Creo que MVP es mejor para escritorio, y MVC es para aplicación web, porque en el escritorio, el modelo tiene la capacidad de plantear el evento
Encontré el artículo mencionado por Aviad Ezra bastante útil para comenzar a usar el patrón de arquitectura MVP con mi aplicación de escritorio WinForms. El código de ejemplo incluido es fácil de entender. – DavidRR
Puede generar eventos utilizando llamadas ajax o websockets. Se trata de la parte del servidor en realidad. – hakan
- 1. Model-View-Presenter y Android Application Design
- 2. C# WinForms Model-View-Presenter (Vista pasiva)
- 3. Ejemplo Swing Model View Presenter (MVP)
- 4. Model-View-Presenter: ¿Por qué el modelo está estático?
- 5. Web Forms ASP.NET - Model View Presenter y controles de usuario
- 6. Dónde debe nacer View & Presenter
- 7. Forma más correcta de redirigir la página con Model-View-Presenter Patrón
- 8. Adaptación del modelo de Model View Presenter a Android con Fragment Tabs
- 9. ¿Qué alternativas hay para Model-View-Controller?
- 10. Cómo estructurar un programa C# WinForms Model-View-Presenter (vista pasiva)?
- 11. ¿Cuál es la ventaja de Model-View-Controller (MVC) sobre Model-View?
- 12. ¿Cómo funciona Joomla Model View Controller (MVC)?
- 13. Ejemplos de Hierarchical-Model-View-Controller (HMVC)?
- 14. android model view presentador/controlador ejemplos
- 15. View-Model declarando de Knockout.js. Hay dos métodos
- 16. Cómo usar Qt Model/View framework con el marco Graphics View
- 17. En Presenter En primer lugar, ¿por qué el método SubscribeSomeEvent en una interfaz es preferible a los simples eventos antiguos?
- 18. Violencia del patrón de Model-View-ViewModel de DRY?
- 19. Model View Controller Patrón de diseño Código Ejemplo
- 20. ¿Qué es un motor ASP.Net MVC View?
- 21. ¿Es ASP.net MVC View una "clase"?
- 22. automapper, ¿dónde pones tu código para mapear View Model to Entity
- 23. "Caracteres no válidos en la ruta". Visual Studio WinForm Design View
- 24. ¿De qué color es Windows 'System.Control? (Visual Studio Design View)
- 25. ¿qué significa redirect_to (@model) en los rieles?
- 26. ¿cuál es la diferencia entre model-> alias y model-> name en CakePHP?
- 27. ¿Debo usar el patrón Model-View-ViewModel (MVVM) en los proyectos de Silverlight?
- 28. El mejor lugar para abrir una nueva ventana en Model View ViewModel
- 29. ¿Cómo se aplica el patrón Model-View-Controller al desarrollo de iPhone?
- 30. El patrón de diseño Model-Repository-Service-Validator-View-ViewModel-Controller (?)
En cualquier caso, usted está involucrado con modelos, y eso tiene que ser un buen cosa. –