Con la proliferación de las aplicaciones móviles, es importante conocer Arquitecturas de diseño, con el fin de tener la estructura, funcionamiento e interacción entre diferentes partes del software y ofrecer una aplicación lo más óptima posible. En este post, te comentaremos qué es MVC, MVP y MVVM en el sistema operativo Android.
MVC (Model View Controller)
En un tiempo fue la arquitectura que todos usaban en los inicios de Android, sin embargo, actualmente apenas se usa por los numerosos inconvenientes que da. En su momento se trataba la solución para separar la interfaz de usuario de la lógica de negocio, donde 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: es nuestra interfaz, la visualización de nuestro model. Tanto botones, campos de texto y más.
- Controller: tiene la lógica de negocio, puede tener la lógica que realizará un botón al hacerle click, llevarnos a otro vista, actualizar, decirle al modelo que traiga datos, etc.
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.
¿Quieres saber en qué consisten mvp vs mvc? ¡Lee el siguiente apartado!
MVP (Model View Presenter)
Esta arquitectura resuelve varios detalles que se presentan cuando se cuenta con una aplicación con mvc mvp mvvm android. No toda la responsabilidad debe caer en el MainActivity ya que esto podría ocasionar errores de fluidez haciéndola crashear al haber un proceso pesado en el hilo principal de la aplicación. La arquitectura MVP organiza mejor la distribución de archivos y define las responsabilidades de otra forma.
- Model: igual que en MVC.
- View: el Activity/Fragment es considerado parte de la vista y se deja de tener 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. Lo ideal es que haya 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.
Ventajas de la arquitectura MVP:
- Es muy fácil de replicar, una vez que lo implementas para una activity o fragment se trata casi solo de copiar y pegar.
- La separación de código es muy clara.
- Gracias a lo anterior te permite hacer testing exhaustivo fácil.
- Una vez que lo entiendes lo puedes usar una y otra vez y funciona muy bien casi en cualquier tipo de aplicación.
- Es fácil de adaptar a apps que ya están construidas con código antiguo (Legacy), aunque sí se necesita bastante trabajo y tiempo.
Desventajas de arquitectura MVP :
- Es relativamente difícil de entender al principio.
- Necesitas muchas interfaces (y mucho código repetitivo), como consecuencia a veces es aburrido de implementar.
Ahora sabes la diferencia entre arquitectura mvp vs mvc para el sistema operativo de Android.
MVVM (Model View ViewModel)
🔴 ¿Quieres entrar de lleno al Desarrollo Mobile? 🔴
Descubre el Desarrollo de Apps Móviles Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Desarrollo de Apps Móviles por una semanaEn general, el patron mvvm android es diferente a MVP porque en esta arquitectura se necesita que los datos se estén manejado de una forma más automatizada. Se pueden usar varias versiones mvvm vs mvp vs mvc , 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 existe Live data y RxJava o RxAndroid que no son más que características de la programación reactiva que se puede utilizar para hacer la actualización de datos más real time.
Los elementos que contienen la arquitectura mvvm android son:
- Model: es igual que en las 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.
Ventajas de mvvm:
- Recomendado por Google y prácticamente hecho para Android.
- Su mayor ventaja es que tiene herramientas para manejar el lifecycle de los activities y fragments.
Desventajas de mvvm:
- Necesitas hacer ciertas cosas que se podrían hacer de manera más fácil.
- No es tan replicable como el MVP, en cada Activity o Fragment donde lo uses tienes que hacer algunas cosas diferentes.
- Es difícil de adaptar a apps que ya están hechas.
Hemos explicado en qué consisten MVC, MVP y MVVM, sus características, sus ventajas y desventajas de cada arquitectura.
¿Por dónde seguir?
Ahora que conoces las diferencias entre MVC, MVP y MVVM, ¿quieres entrar al sector del Desarrollo de aplicaciones mobile? Con nuestro Desarrollo de Apps Móviles Full Stack Bootcamp podrás hacerlo en menos de 10 dominando todas las herramientas y metodologías del sector y convertirte en el profesional que cualquier empresa sueña con tener.