Arquitectura de Android (Historia,Evolución,Implementación)
“Si cree que la buena arquitectura es cara, pruebe la mala”.
Brian Foote y Joseph Yoder
Y así empezamos este articulo, primero debemos comprender la importancia de tener una buena arquitectura en nuestro proyecto. Desde el momento en que entiendes estos no tendrás problema en invertir tiempo y dinero en implementar una arquitectura correcta, porque tarde que temprano resultara mas caro un proyecto con falencias de escalabilidad y potabilidad a raíz de una mala implementación de las tecnologías.
En esta ocasión daremos protagonismo al desarrollo de aplicaciones móviles de cuales diremos la siguiente afirmación; Por naturaleza y excelencia una buena aplicación móvil debe ser :
- Rápidas
- Fluidas
- Seguras
- Mantenibles
Y Android no es la excepción, dedicaremos este articulo a conocer la historia y la evolución de la arquitectura de Android, tocaremos temas como MVC, MVVC, MVP.
Pero antes vamos a hacer una pequeña aclaración PATRÓN DE DISEÑO VS ARQUITECTURA DE DISEÑO.
PATRÓN: Modelo que sirve de muestra para sacar otra cosa igual.
PATRÓN DE DISEÑO : Es una solución a un problema común de código que es reutilizable
Organiza un componente o elemento de la aplicación.
Acá te cuento algunos de los patrones de diseño mas comunes :
- Singleton
- Adapter
- Builder
- Factory
ARQUITECTURA : Arte y técnica de diseñar, proyectar y construir
ARQUITECTURA DE DISEÑO : Proporciona la estructura, funcionamiento e interacción entre
las partes del software
Organización a toda la estructura de la aplicación
- MVC
- Model-View-Controller
- MVP
- Model-View-Presenter
- MVP + Clean
- MVVM
- Model-View-ViewModel
- Android Jetpack
- Arquitectura de componentes
Evolución de la arquitectura de Android
MVC (Model-View-Controller): Es donde teníamos todas las responsabilidades y todas las acciones de la aplicación en una sola clase, la clase activity (main.Activity).
MVP (Model-View-Presenter): Separa las capas de modelo donde vamos a tener todas las conexiones. Después tenemos un presentador; es la capa donde mantiene la comunicación entre el modelo de datos y la user interface. Después esta arquitectura tuvo una evolución, donde se decidió que deberíamos seguir los principios de la arquitectura limpia, la cual nos dice que debemos exponer las entidades y que las entidades deben ser lo mas importante de la aplicación, mas allá de todas las capas que estén por debajo.
MVVM (Model-View-ViewModel): en la vista tenemos activities y/o fragments, despues en la capa de view model vamos a tener clases que funcionen en un hilo adicional de la aplicación para eso vamos a tener clases como : AsyncTask, Rxjava y LiveData. Y por ultimo esta la capa de model que aquí vamos a tener toda la interacción con una base de datos para conectarla y hacer que los datos lleguen a la user interface.
Android Jetpack(ACTUAL): Arquitectura de componentes(network resources).
Si deseas conocer mas de arquitectura oficial de Android Jetpack ingresa a este link
Modelo de capas
Layers model
Aca podemos ver un resumen de la forma en que se encuetra distribuida un app movil :
Es importante conocer los principios SOLID para tener una buena arquitectura en Android, para ello dedicaremos un articulo completo para poder entender a profundidad de que se trata.
Beneficios de usar un arquitectura correcta en Android
- Organiza el código para trabajar en equipo
- Hace el código más intuitivo de leer y escribir
- Organiza el código para trabajar en equipo
- Permite mantener, testear e integrar nuevos features más rápido y fácil
Espero que les haya sido de utilidad este contenido, dejen en los comentarios algún tema en especial del cual deseen conocer.