2058 votos

¿Qué son los MVP y MVC y cuál es la diferencia?

Cuando se mira más allá de la RAD (arrastrar y colocar y configurar) en el camino de la construcción de Interfaces de Usuario que muchas de las herramientas anime es probable que venir a través de 2 patrones de diseño llamado Model-View-Controller y el Model-View-Presenter. Mi pregunta tiene tres partes:

  1. ¿Qué problemas de estos patrones de la dirección?
  2. En qué se parecen?
  3. ¿Cómo son diferentes?

1937voto

Glenn Block Puntos 7019

Model-View-Presenter

En el MVP, el Presentador contiene la interfaz de usuario de la lógica de negocio para la Vista. Todas las invocaciones desde el punto de Vista delegado directamente al Presentador. El Presentador también está desacoplado directamente de la Vista y habla a través de una interfaz. Esto es para permitir a las burlas de la Vista en una unidad de prueba. Un atributo común de MVP es que tiene que haber un montón de envío. Por ejemplo, cuando alguien hace clic en el botón "Guardar", el controlador de eventos a los delegados a la del Presentador de "OnSave" método. Una vez que el proceso de almacenamiento se haya completado, el Presentador llamará de nuevo la Vista a través de su interfaz por lo que la Vista puede mostrar que el ahorrar se ha completado.

MVP tiende a ser muy patrón natural para el logro de presentación separados en los Formularios Web. La razón es que la Vista es siempre crea por primera vez por el ASP.NET en tiempo de ejecución. Usted puede encontrar más información sobre ambas variantes.

Las dos principales variaciones de

Pasivo Vista: La Vista es tan tonto como sea posible y contiene casi a cero la lógica. El Presentador es un medio hombre que habla a la Vista y el Modelo. La Vista y el Modelo son completamente blindado de uno a otro. El Modelo puede generar eventos, pero el Presentador se suscribe a ellos para la actualización de la Vista. En Opinión de Pasivo no hay ningún enlace de datos directo, en lugar de la Vista expone setter propiedades que el Presentador utiliza para establecer los datos. Todos los administra el estado en el que el Presentador y no la Opinión.

  • Pro: la máxima capacidad de prueba de la superficie; una separación limpia entre la Vista y el Modelo
  • En contra: más de trabajo (por ejemplo, todo el setter propiedades) como lo están haciendo todos los datos de unión a sí mismo.

Controlador supervisor: El Presentador de identificadores de usuario gestos. La Vista se une a la Modelo directamente a través del enlace de datos. En este caso es el Presentador del trabajo para pasar el Modelo a la Vista, de modo que se puede enlazar con él. El Presentador también contendrá la lógica de gestos como pulsar un botón, la navegación, etc.

  • Pro: mediante el aprovechamiento de enlace de datos la cantidad de código es reducido.
  • En contra: hay menos comprobables superficie (porque de enlace de datos), y hay menos de encapsulación en la Vista, ya que habla directamente con el Modelo.

Modelo-Vista-Controlador

En el MVC, el Controlador es el responsable de determinar que se muestra la Vista en respuesta a cualquier acción, incluso cuando se carga la aplicación. Esto difiere de MVP en la que las acciones de la ruta a través de la Vista, el Presentador. En MVC, cada acción en la Vista se correlaciona con una llamada a un Controlador junto con una acción. En la web de cada acción implica una llamada a una URL en el otro lado de la cual hay un Controlador que responde. Una vez que el Controlador ha completado su tratamiento, se le devolverá el punto de Vista correcto. La secuencia continúa de esa manera durante toda la vida de la aplicación:

 La acción en la Vista
 -> Llamada al Controlador
 -> Controlador De Lógica
 -> Controlador devuelve la Vista.

Otra gran diferencia sobre MVC es que la Vista no se unen directamente a la Modelo. El punto de vista simplemente hace, y es completamente independiente. En implementaciones de MVC la Vista, por lo general no tienen ninguna lógica en el código de detrás. Esto es contrario a MVP de donde es absolutamente necesario, como si la Vista no delegado a la Presentadora, que nunca será llamado.

Modelo De Presentación

Otra pauta a tener en cuenta es la Presentación del Modelo patrón. En este modelo no hay Presentador. En lugar de la Vista se une directamente a un Modelo de Presentación. El Modelo de Presentación es un Modelo diseñado específicamente para la Vista. Esto significa que este Modelo puede exponer las propiedades que uno nunca pondría en un modelo de dominio, ya que sería una violación de la separación de preocupaciones. En este caso, el Modelo de Presentación se une a la modelo de dominio, y puede suscribirse a los eventos procedentes de ese Modelo. La Vista, a continuación, se suscribe a los eventos procedentes de la Presentación del Modelo y se actualiza en consecuencia. El Modelo de Presentación puede exponer a los comandos de la vista utiliza para invocar acciones. La ventaja de este enfoque es que esencialmente puede quitar el código subyacente en el PM encapsula completamente todo el comportamiento de la vista. Este patrón es un muy fuerte candidato para su uso en aplicaciones de WPF y es también llamado Model-View-ViewModel.

Hay un artículo de MSDN sobre el Modelo de Presentación y una sección en la Guía de Aplicaciones Compuestas para WPF (ex Prisma) acerca de los Patrones de Presentación Separados

425voto

Phyxx Puntos 3064

Esta es una simplificación de las muchas variantes de estos patrones de diseño, pero esto es lo que me gusta pensar acerca de las diferencias entre los dos.

MVC

MVC

MVP

enter image description here

410voto

Jon Limjap Puntos 46429

Me escribió en su blog acerca de este nuevo mientras, citando en Todd Snyder excelente post sobre la diferencia entre los dos.

Aquí están las principales diferencias entre los patrones:

Patrón MVP

  • La vista, es poco más junto a la modelo. El presentador es responsable de la unión a la modelo la vista.
  • Más fáciles de la prueba de unidad debido a la interacción con la vista es a través de una interfaz
  • Suele ver al presentador mapa de uno a uno. Complejo de puntos de vista puede tener multi presentadores.

Patrón MVC

  • Controlador están basados en comportamientos y puede ser compartida a través de vistas
  • Puede ser responsable de determinar qué vista para mostrar

La mejor explicación en la web he podido encontrar.

166voto

Quibblesome Puntos 14441

El MVP es no necesariamente un escenario donde la Vista se en carga (véase la Taligent del MVP, por ejemplo).
Me parece lamentable que la gente se sigue predicando este como un patrón (Ver en el cargo), frente a un anti-patrón, ya que contradice "Es solamente una opinión" (Pragmática Programador). "Es solamente una opinión", afirma que la final de la vista que se muestra al usuario es una preocupación secundaria de la aplicación. Microsoft MVP de patrón hace re-uso de puntos de vista mucho más difícil y convenientemente excusas de Microsoft diseñador desde el fomento de una mala práctica.

Para ser sincero, creo que las preocupaciones fundamentales de la MVC cierto para cualquier MVP de la aplicación y las diferencias son casi en su totalidad semántica. Mientras que usted está después de la separación de preocupaciones entre la vista (que muestra los datos), el controlador (que inicia y controla la interacción del usuario) y el modelo (los datos subyacentes y/o servicios)que son el logro de los beneficios de la MVC. Si se están alcanzando los beneficios que realmente se preocupa si su patrón MVC, MVP o Controlador Supervisor? El único verdadero patrón permanece como MVC, el resto son sólo diferentes sabores.

Considere la posibilidad de este muy interesante artículo que de manera integral se enumera una serie de estos diferentes implementaciones. Usted puede notar que todos son básicamente lo mismo pero de manera ligeramente diferente.

Personalmente creo que el MVP sólo ha sido recientemente re-introdujo como un término pegadizo para reducir los conflictos entre semántica fanáticos que discutir si algo es verdaderamente MVC o no, o para justificar Microsoft Rápido de herramientas de Desarrollo de Aplicaciones. Ninguna de estas razones en mis libros justificar su existencia por separado como patrón de diseño.

105voto

Brian Leahy Puntos 7840

MVP de la Vista en la carga.
La Vista, en la mayoría de los casos, crea su Presentador. El Presentador va a interactuar con el modelo y manipular la Vista a través de una interfaz. La Vista a veces interactuar con el Presentador, generalmente a través de alguna interfaz. Esto se reduce a la aplicación, ¿quieres la Vista para llamar a métodos en los que el presentador o ¿quieres que la Vista han de eventos, el Presentador de la escucha. Todo se reduce a esto: La Vista sabe sobre el Presentador. La Opinión de los delegados a la Presentadora.

MVC el Controlador es el responsable.
El controlador se crea o acceso basado en algún evento/solicitud, el controlador, a continuación, crea el punto de Vista apropiado e interactúa con el Modelo de para configurar la Vista. Todo se reduce a: Controlador crea y gestiona la Vista, la Vista es esclavo de la Controladora. La vista no se sabe acerca de Controlador.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X