que han respondido a algunas pregunta similar antes, pero que podría ser útil para usted también:
Las principales características de ambos para su uso en el entorno Android.patrón
MVP:
- Consta de Modelo, Vista, y las capas del presentador;
Ver delegados de entrada del usuario al presentador; ambas capas deben tener una relación de 1 a 1;
La vista y el modelo no están estrechamente acoplados para una separación clara de
preocupaciones;
Ver conecta con el modelo mediante la unión directa de datos;
Fácil prueba de la unidad, como una interfaz para la capa del presentador uno puede burlarse rápidamente; patrón
MVVM:
incluye tres partes principales:
Modelo (de reglas de negocio, acceso a datos, clases),
Ver (interfaz de usuario),
- ViewModel (como agente entre la vista y modelo);
- La mejor solución para manejar las tareas relacionadas con el sistema de Windows Presentation Fundación (WPF) y Silverlight marco de aplicación;
- Proporciona una separación más clara de la IU y la lógica de la aplicación;
- Prueba de la unidad sea aún más fácil, ya que no hay dependencia de la vista
Comparación de características
Vamos a poner juntos los elementos esenciales de MVP vs MVVM para comparar. También debemos enfatizar que no estamos abogando por uno o patrón.
Métricas de código: MVP puede producir más clases y código Java. En MVVM hay más clases de Java pero menos código por clase.
Capacidad de mantenimiento: MVP es fácil de aprender, modificar y agregar funciones. Agregar nuevas características con MVVM puede requerir cierta experiencia con la biblioteca.
Lógica: en MVP la Vista es en realidad su aplicación mientras Presenter maneja el flujo de la aplicación. En MVVM, las clases de código (ViewModel) son la aplicación, mientras que View es la interfaz que permite a los usuarios interactuar con la aplicación.
Entrada de datos: Comienza con la vista en MVP, no en el presentador. La entrada en MVVM comienza con View, no con ViewModel.
Asignación y referencias: Cartografía uno a uno entre la Vista y el Presentador en MVP, sin referencia entre ellos. Mapeo Uno a Muchos entre la Vista y el Modelo de Vista en MVVM, sin referencia.
Palabras finales
Evidentemente, los patrones arquitectónicos evolucionan. MVVM tiene la tendencia de convertirse en una herramienta realmente ordenada y aprehensiva. Mientras tanto, el patrón MVP es lo suficientemente flexible como para beneficiarse de varias bibliotecas.
Lo que también está claro es que no tiene que apegarse estrictamente a MVP o MVVM. En la mayoría de los casos, no podemos construir una aplicación puramente en un solo patrón, y eso está bien. Lo principal es separar la vista, el modelo y la lógica entre ellos.
¿Cuándo usar MVP y cuándo usar MVVM, puede preguntar? El consejo se esconde más bien en el enlace de datos. En los casos en que no es posible enlazar con el contexto de datos, la mayoría de los desarrolladores prefieren MVP (Windows Forms es un gran ejemplo). MVVM es de preferencia en los casos en que es posible enlazar con datacontext, ya que hay menos interfaces y menos código para mantener.
por los materiales de la blog
Publicación relacionada en SO: [http://stackoverflow.com/questions/839118/composite-guidance-for-wpf-mvvm-vs-mvp] – Marc
¿Es esta una función que la VM no debe conocer de View? sobre una interfaz de View? – Mark
¿Qué tal si me gusta establecer el foco en el control después de guardar? ¿Debo crear una propiedad adjunta para establecer el foco? – Mark