Diferencia entre el patrón de arquitectura MVC 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. MVC (Modelo — Vista — Controlador) y MVVM (Modelo — Vista — ViewModel) son las dos arquitecturas de Android más populares entre los desarrolladores.

El patrón modelo-vista-controlador (MVC)

El patrón MVC sugiere dividir el código en 3 componentes. Al crear la clase/archivo de la aplicación, el desarrollador debe categorizarlo en una de las siguientes tres capas:

  • Modelo: este componente almacena los datos de la aplicación. No tiene conocimiento sobre la interfaz. El modelo 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: es la capa de UI (interfaz de usuario) que contiene los componentes que son visibles en la pantalla. Además, proporciona la visualización de los datos almacenados en el Modelo y ofrece interacción con el usuario.
  • Controlador: Este componente establece la relación entre la Vista y el Modelo. Contiene la lógica de la aplicación central y se informa de la respuesta del usuario y actualiza el Modelo según la necesidad.

The Model—View—Controller(MVC) Pattern

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

El patrón MVVM tiene algunas similitudes con el patrón de diseño MVP (Modelo – Vista – Presentador) ya que ViewModel desempeña el rol 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 MVC y MVVM

MVC (controlador de vista de modelo)

MVVM (Modelo Vista Vista Modelo)

La arquitectura de aplicaciones de Android más antigua. Patrón de arquitectura reconocido por la industria para aplicaciones.
Las entradas del usuario son manejadas por el controlador . La vista toma la entrada del usuario y actúa como el punto de entrada de la aplicación.
El controlador y la vista existen con la relación de uno a muchos. Un controlador puede seleccionar una vista diferente según la operación requerida. La vista múltiple se puede asignar con un solo modelo de vista y, por lo tanto, existe una relación de uno a muchos entre la vista y el modelo de vista.
La Vista no tiene conocimiento sobre el Controlador . La Vista tiene referencia al ViewModel .
Esta arquitectura tiene una alta dependencia de las API de Android.  Depende poco o nada de las API de Android.
Es difícil hacer cambios y modificar las características de la aplicación ya que las capas de código están estrechamente acopladas. Fácil de hacer cambios en la aplicación. Sin embargo, si la lógica de vinculación de datos es demasiado compleja, será un poco más difícil depurar la aplicación.
Soporte limitado para pruebas unitarias. La capacidad de prueba de la unidad es más alta en esta arquitectura.
No sigue el principio modular y de responsabilidad única. Sigue el principio modular y de responsabilidad única.

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 *