Diferencia entre el patrón de arquitectura MVP y MVVM en Android

Los desarrolladores siempre prefieren desarrollar una aplicación de Android mediante la aplicación de un patrón de arquitectura de software. Un patrón de arquitectura da modularidad a los archivos del proyecto y asegura que todos los códigos se cubran en las pruebas unitarias. Facilita a los desarrolladores la tarea de mantener el software y ampliar las características de la aplicación en el futuro. MVP (Model — View — Presenter) y Model — View — ViewModel (MVVM) son las dos arquitecturas de Android reconocidas por la industria más populares entre los desarrolladores.

El patrón Modelo — Vista — Presentador (MVP)

El patrón de arquitectura MVP proporciona una manera fácil de estructurar los códigos del proyecto. La razón por la que MVP es ampliamente aceptado es que proporciona modularidad, capacidad de prueba y una base de código más limpia y fácil de mantener. Está compuesto por los siguientes tres componentes:

  • Modelo: Capa de almacenamiento de datos. Es responsable de manejar la lógica del dominio (reglas comerciales del mundo real) y la comunicación con la base de datos y las capas de red.
  • Vista: capa UI (interfaz de usuario). Proporciona la visualización de los datos y realiza un seguimiento de la acción del usuario para notificar al Presentador.
  • Presentador: obtenga los datos del modelo y aplique la lógica de la interfaz de usuario para decidir qué mostrar. Administra el estado de la Vista y realiza acciones de acuerdo con la notificación de entrada del usuario desde la Vista.

The Model — View — Presenter (MVP) Pattern

El patrón Modelo — Vista — ViewModel (MVVM)

El patrón MVVM tiene algunas similitudes con el patrón de diseño MVP (Model — View — Presenter) ya que ViewModel desempeña la función de presentador . Sin embargo, los inconvenientes del patrón MVP han sido resueltos por MVVM. Sugiere separar la lógica de presentación de datos (vistas o interfaz de usuario) de la parte de la lógica empresarial central de la aplicación. Las capas de código separadas de MVVM son:

  • Modelo: esta capa es responsable de la abstracción de las fuentes de datos. Model y ViewModel trabajan juntos para obtener y guardar los datos.
  • Vista: El propósito de esta capa es informar al ViewModel sobre la acción del usuario. Esta capa observa el ViewModel y no contiene ningún tipo de lógica de aplicación.
  • ViewModel: Expone esos flujos de datos que son relevantes para la Vista. Además, sirve como enlace entre el Modelo y la Vista.

The Model — View — ViewModel (MVVM) Pattern

Diferencia entre el patrón de diseño MVP y MVVM

MVP (presentador de vista de modelo)

MVVM (Modelo Vista Vista Modelo)

Resuelve el problema de tener una Vista dependiente usando Presenter como canal de comunicación entre Modelo y Vista.  Este patrón de arquitectura está más orientado a eventos, ya que utiliza el enlace de datos y, por lo tanto, facilita la separación de la lógica comercial principal de la Vista.
La relación uno a uno existe entre el Presentador y la Vista . La Vista Múltiple se puede mapear con un solo ViewModel .
El presentador tiene conocimiento sobre la vista. ViewModel no tiene ninguna referencia a View .
La capa del modelo devuelve la respuesta de la entrada del usuario al presentador , que la reenvía a la vista . Después de realizar operaciones de acuerdo con la entrada del usuario, la capa Modelo devuelve la respuesta a la Vista .
Presenter maneja el flujo de la aplicación y View es la aplicación real. ViewModel es la aplicación real y View es la interfaz para que el usuario interactúe con la aplicación.
El archivo del proyecto contendrá más clases y código. El archivo de Proyecto contendrá más clases pero menos código por clase.
Ideal para aplicaciones simples y complejas. No es ideal para proyectos de pequeña escala.
Pruebas unitarias fáciles de llevar a cabo, pero un estrecho vínculo entre View y Presenter puede dificultarlo un poco. La capacidad de prueba de la unidad es más alta en esta arquitectura.

Publicación traducida automáticamente

Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *