2012-08-09 31 views
14

Por lo que puedo deducir, las dos primeras no parecen tan diferentes. Ya sea que se lo llame controlador o presentador, todavía parece tener las mismas funciones de mediación.¿Cuáles son las diferencias entre MVC, MVP y MVVM?

MVVM parece un poco diferente ya que el controlador parece ser más una parte del marco, como con los enlaces XAML.

¿Qué es la explicación "Cliff's Notes" de las diferencias?

+1

Glenn Bloque explicar muy claramente en [aquí] [1] [1]: http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what -is-the-difference/101561 # 101561 –

+1

En realidad no está claro, porque su descripción de MVC es solo una nueva redacción de MVP. Esa descripción, aunque altamente votada, es incorrecta. Es más un intento de mostrar que ASP.NET MVC implementa ambos patrones. –

Respuesta

13

La diferencia está en la forma en que los datos de la capa del modelo terminan en las instancias de vista.

  • en visión clásica MVC (y también en Modelo2 MVC) es estructura activa. Solicita información de la capa del modelo. El controlador solo cambia el estado de la capa y la vista del modelo.
  • en MVP la vista es pasiva. En su lugar, presentador solicita información de la capa modelo y la pasa a la vista. Puede leer más extensamente sobre el patrón MVP here.
  • en MVVM es similar a MVP, pero viewmodel tiene que manipular la información antes de pasarla a ver.

La diferencia entre MVP y MVVM está en proceso de desarrollo. Utilizaría el patrón MVP al crear una capa de presentación para una capa de modelo conocida.

Pero tendrá que usar MVVM, si tiene una interfaz de usuario preexistente (o por alguna razón, no modificable) y una capa de modelo preexistente (o inmutable). Y tienes que hacer que trabajen juntos. Ahí es donde Viewmodel entra en juego.

+0

¿Cómo funciona Model2 en PHP? Controlador-> Ver-> Modelo de capa (diferentes secciones requieren diferentes interacciones: barra lateral, navegación)? – Stephane

+1

Por eso la vista actual puede usar varias plantillas. Tiene plantilla para navegación, para barra lateral, otra para lista de documentos, etc. La vista adquiere información del modelo y, en función de esa información, decide cómo mostrar el resultado. Pensé que también podría estar interesado en investigar el patrón HMVC. Se acerca al problema desde un ángulo un poco diferente. –

+0

Parece que tener una vista más activa significaría que si mi vista quisiera xml en lugar de json, sería mucho más simple que decir que mi controlador maneje eso. – Stephane

Cuestiones relacionadas