31

Arquitecturas de Software en Android: MVC, MVP y MVVM

112849Puntos

hace 5 años

Muchos proyectos nacen de la idea de crear una aplicación móvil que cambie el mundo y resuelva un problema en particular. Gran parte de la población cuenta con un teléfono inteligente conectado a internet, por eso crear una aplicación es un paso primordial a la hora de lanzar tu idea de negocio.

Debido a esto las aplicaciones se han vuelto más robustas y deben contar con buenos features para llamar la atención de los usuarios, pero para los desarrolladores no solo es suficiente con que corra de buena manera con un código no optimizado porque mientras más grande se haga el proyecto más caótico será mantenerlo y esa gran idea se convertirá en una pesadilla.

Por esto es importante conocer de Arquitecturas, pero Arquitecturas de Diseño. De esta manera tendremos la estructura, funcionamiento e interacción entre diferentes partes del software.

MVC - Model View Controller

Fue esa arquitectura que todos usaban en los inicios de Android y en estos momentos es muy escasa, pero en su momento fue la solución para separar la interfaz de usuario de la lógica de negocio. La primera cambia más frecuente que la segunda.

  • Model: La capa de datos, responsable de manejar la conexión con la base de datos o una API.
  • View: Será nuestra interfaz, la visualización de nuestro model. Tanto botones, campos de texto y más.
  • Controller: Tendrá la lógica de negocio, puede tener la lógica qué realizará un botón al hacerle click, llevarnos a otro vista, actualizar, decirle al modelo que traiga datos o más.

Tanto la vista como el controlador dependen del modelo y estarán definidos en un mismo lugar, puede ser en un Activity o Fragments. Una de las desventajas de esta arquitectura es que rompe uno de los principios SOLID y es el de Single Responsability.

Persona viendo su teléfono mientras escribe código

MVP - Model View Presenter

Esta arquitectura resuelve varios detalles que se presentan cuando tienes una aplicación con MVC. No toda la responsabilidad debe caer en nuestro MainActivity porque esto podría ocasionar errores de fluidez haciéndola crashear al haber un proceso pesado en el hilo principal de la aplicación.

MVP organiza mejor la distribución de archivos y define las responsabilidades de otra forma.

  • Model: Igual que en MVC, no hay cambios acá.
  • View: Ahora el Activity/Fragment es considerado parte de la vista y dejamos de tenerlo en el Controller como ocurre en la arquitectura anterior.
  • Presenter: Es como el Controller de MVC, pero va a estar orquestando todo lo que sucede. Es como un mesero qué se comunicará con el cocinero (modelo) para traer lo que pide la vista. Debería haber un Presenter por cada Activity o Fragment.

Esto hace todo mucho más limpio y facilita la realización de unit tests a la lógica del presenter porque no esta unida a una vista específica o APIs de Android.

MVVM - Model View ViewModel

En general la arquitectura MVVM es diferente a MVP porque en esta arquitectura vamos a necesitar que los datos se estén manejado de una forma más automatizada y mucho más real time. Podemos usar varias versiones MVVM, una de ellas es data binding que es de las más antiguas y existen en muchos otros frameworks como .NET de Microsoft. También tenemos a Live data y RxJava o RxAndroid que no son más que características de la programación reactiva que podemos utilizar para hacer la actualización de datos más real time.

  • Model: Igual que en arquitecturas anteriores.
  • View: Sigue siendo responsable de la visualización de los datos. Se une con variables y acciones de una forma flexible.
  • ViewModel: Es el responsable de envolver el modelo y prepara los datos observables necesitados por la vista. También proporciona enlaces a la vista para pasarle eventos al modelo. Los cambios en el ViewModel cambian automáticamente la vista y viceversa.
Persona dejando su teléfono mientras escribe código

Conclusión

Cada una estas arquitecturas es importante conocerlas, ya sea para implementarlas en tu próximo proyecto o para cuando entres en una nueva empresa puedas saber cómo hacer la migración de una a otra. Por supuesto, todo esto y mucho más puedes aprenderlo a profundidad con muy buenos ejemplos en el Curso de Arquitectura para Android con la queridísima Anahí Salgado como profesora.

No dudes en tomarlo para seguir creciendo en tu carrera profesional.

Kevin
Kevin
iKenshu

112849Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
1
6Puntos

nice article