2. ¿Que es un Patrón?
Los patrones son la base para la búsqueda de soluciones a
problemas comunes en el desarrollo de software y otros
ámbitos referentes al diseño de interacción o interfaces.
Patrones de arquitectura: Aquellos que expresan un esquema
organizativo estructural fundamental para sistemas de
software.
Patrones de Diseño: Aquellos que expresan esquemas para
definir estructuras de diseño (o sus relaciones) con las que
construir sistemas de software.
3. ¿Que es un Patrón?
Patrones de arquitectura: Los patrones de arquitectura, nos
permiten mantener un proyecto limpio, escalable, fácil de
mantener y de testear. .
Patrones de Diseño: Nos muestran soluciones al momento de
diseñar un software, soluciones de estructura de clases y
reutilización de componentes.
4. ¿Los patrones son para Android?
Los patrones de diseño y de arquitectura no son nuevos, están
con nosotros aproximadamente desde los años 70 y sus
creadores los comenzaron a utilizar para solucionar problemas
de sobre escritura de código en los proyectos web que
implementaban.
Varias tecnologías se han adaptado a utilizar este patrón y en
muchos de los casos los desarrolladores adecuan el lenguaje a
los patrones.
6. MVC
El modelo-vista-controlador (MVC) es un patrón de
arquitectura de software, que separa los datos y la
lógica de negocio de una aplicación de la interfaz de
usuario y el módulo encargado de gestionar los
eventos y las comunicaciones. Para ello MVC
propone la construcción de tres componentes
distintos que son el modelo, la vista, y el
controlador, es decir, por un lado define
componentes para la representación de la
información, y por otro lado para la interacción del
usuario. Este patrón de arquitectura de software se
basa en las ideas de reutilización de código y la
separación de conceptos, características que buscan
facilitar la tarea de desarrollo de aplicaciones y su
posterior mantenimiento.
7. MVP
El modelo-vista-presentar (MVP) es una derivación
del patrón arquitectónico modelo-vista-controlador
(MVC), y es utilizado mayoritariamente para
construir interfaces de usuario. En MVP el
presentador asume la funcionalidad del “medio-
hombre”. En MVP, toda lógica de presentación es
colocada al presentador.
8. Diferencias
1. En el MVC, el modelo notifica a la vista cualquier cambio que sufra el estado del modelo. La información
puede pasarse en la propia notificación, o después de la notificación, la vista puede consultar el modelo
directamente para obtener los datos actualizados. Por el contrario, en el MVP, la vista no sabe nada sobre
el modelo y la función del presentador es la de mediar entre ambos, enlazando los datos con la vista.
2. En el modelo MVC, la vista tiende a tener más lógica porque es responsable de manejar las notificaciones
del modelo y de procesar los datos. En el modelo MVP, esa lógica se encuentra en el presentador, haciendo
a la vista “estúpida”. Su única función es representar la información que el presentador le ha
proporcionado.
3. En MVC, el modelo tiene lógica extra para interactuar con la vista. En el MVP, esta lógica se encontraría en
el presentador.
11. Ejemplo
• El usuario introduce su usuario y clave.
• La Vista ejecuta el método del presentador a hacer Login.
• El Presentador hacer la llamada al ApiCliente.
• Si todo ha ido bien, el Presentador notifica a la vista que el login fue exitoso. En Caso de que se haya producido
algún error, muestra una alerta con un mensaje de error.
Saludo
¿Quien soy?
¿De donde soy?
¿Qué Hago?
¿Mis pasatiempos?
Hoy vamos a hablar de un tema muy importante para los programadores nuevos en Android los cuales no saben como arquitecturar sus proyectos de manera efectiva.
Es increíble la cantidad de post que salen mensualmente enseñándonos nuevas formas de arquitecturar nuestras aplicaciones, de cómo mezclar patrones con librerías, por ejemplo:
Como hacer un MVP con Event Buss
Como hacerlo Reactivo con RXJava
Como inyectar dependencias manualmente o con Dagger.
Es importante el día en que como desarrollador te animas a buscar las mejores practicas y las mejores herramientas para ser mas productivo y que tus aplicaciones sean mas robustas.
Eso es un paso de madures muy importante en tu etapa como desarrollador.
¿Alguien le queda alguna duda?
Estas definiciones son sacadas de la página de Wikipedia y se que a primera no se entenderán y les daré mi definición propia.
¿Han escuchado sobre Patrón de Arquitectura?
¿Qué patrones de Arquitectura Conocen?
MVC = Modelo Vista Controlador
MVP = Modelo Vista Presentador
MVVM = Modelo Vista VistaModelo
Estos son alguno de los patrones de arquitectura más conocidos en Android.
¿Ya conocen o aplican alguno?
En esta charla vamos a hablar sobre el patron MVC vs el patron MVP aplicados a la tecnologías de Android.
Información extraída de Wikipedia.
Información extraída de Wikipedia.
Como podemos ver ambos modelos parecen bastante similares pero ofrecen importantes diferencias
Modelo: Esta capa gestiona los datos. Son las clases que denominaríamos de lógica de negocio.
Vista: Se encarga de mostrar los datos. Aquí se encontrarían nuestros Fragmentos y Vistas.
Presentador: Se sitúa entre el modelo y la vista, permitiendo conectar la interfaz gráfica con los datos.
Android no nos ofrece de forma nativa la posibilidad de desarrollar nuestras aplicaciones bajo el patrón MVP, de hecho viola mucho de sus principios básicos. Aun así podemos llevar a cabo alguna aproximación para este fin.
Vamos a ver un posible ejemplo de implementación en el que el usuario dispone de un formulario dónde puede introducir contactos.