SlideShare una empresa de Scribd logo
1 de 13
Alex Mejicanos
@alex_mejicanos
fb.com/alexmejicanosgt
http://alexmejicanos.com
¿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.
¿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.
¿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.
Patrones de Arquitectura para Android
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.
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.
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.
Capas del patrón MVP
MPV en Android
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.
Repo:
https://github.com/alexmeji/MVPAFest
Gracias

Más contenido relacionado

La actualidad más candente

Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniPrototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniRAUL CHIPANA LARICO
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwareTtomas Carvajal
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASAlcoverify
 
Análisis y diseño de sistemas sesion 15 - casos de estudio
Análisis y diseño de sistemas   sesion 15 - casos de estudioAnálisis y diseño de sistemas   sesion 15 - casos de estudio
Análisis y diseño de sistemas sesion 15 - casos de estudioGianfrancoEduardoBra
 
2.3 fases de cobit
2.3 fases de cobit2.3 fases de cobit
2.3 fases de cobitNena Patraca
 
Metodologia de desarrollo de software
Metodologia de desarrollo de softwareMetodologia de desarrollo de software
Metodologia de desarrollo de softwareVictor Varela
 
Requerimientos de un sistema de información
Requerimientos de un sistema de informaciónRequerimientos de un sistema de información
Requerimientos de un sistema de informacióncamilo_flores
 
diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físicoerrroman
 
Consideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSConsideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSevavivez
 
Fase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónFase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónNAHAMA19
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidossaul_ramos
 
Arquitectura de la nube: modelos de servicio y despliegue.
Arquitectura de la nube: modelos de servicio y despliegue.Arquitectura de la nube: modelos de servicio y despliegue.
Arquitectura de la nube: modelos de servicio y despliegue.FranklinGomez38
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónYare LoZada
 
Funciones de la Administración de Redes
Funciones de la Administración de RedesFunciones de la Administración de Redes
Funciones de la Administración de RedesJose Manuel Acosta
 
Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.argentm
 

La actualidad más candente (20)

Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uniPrototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
Prototipo de-sistema-para-matricula-e-inscripcion-de-asignaturas---uni
 
Planeacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de softwarePlaneacion y elaboración de proyectos de software
Planeacion y elaboración de proyectos de software
 
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMASIMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
IMPORTANCIA DEL ANÁLISIS DE REQUERIMIENTOS PARA EL DESARROLLO DE SISTEMAS
 
Análisis y diseño de sistemas sesion 15 - casos de estudio
Análisis y diseño de sistemas   sesion 15 - casos de estudioAnálisis y diseño de sistemas   sesion 15 - casos de estudio
Análisis y diseño de sistemas sesion 15 - casos de estudio
 
2.3 fases de cobit
2.3 fases de cobit2.3 fases de cobit
2.3 fases de cobit
 
Arquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidosArquitectura de sistemas distribuidos
Arquitectura de sistemas distribuidos
 
Metodologia de desarrollo de software
Metodologia de desarrollo de softwareMetodologia de desarrollo de software
Metodologia de desarrollo de software
 
Requerimientos de un sistema de información
Requerimientos de un sistema de informaciónRequerimientos de un sistema de información
Requerimientos de un sistema de información
 
Computación Grid
Computación GridComputación Grid
Computación Grid
 
diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físico
 
Modelamiento software
Modelamiento softwareModelamiento software
Modelamiento software
 
Consideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMSConsideraciones para elegir un buen DBMS
Consideraciones para elegir un buen DBMS
 
Requisitos funcionales y no funcionales
Requisitos funcionales y no funcionalesRequisitos funcionales y no funcionales
Requisitos funcionales y no funcionales
 
Fase de implementación de sistemas de información
Fase de implementación de sistemas de informaciónFase de implementación de sistemas de información
Fase de implementación de sistemas de información
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Arquitectura de la nube: modelos de servicio y despliegue.
Arquitectura de la nube: modelos de servicio y despliegue.Arquitectura de la nube: modelos de servicio y despliegue.
Arquitectura de la nube: modelos de servicio y despliegue.
 
Requerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicaciónRequerimientos funcionales y no funcionales de la aplicación
Requerimientos funcionales y no funcionales de la aplicación
 
Casos De Uso
Casos De UsoCasos De Uso
Casos De Uso
 
Funciones de la Administración de Redes
Funciones de la Administración de RedesFunciones de la Administración de Redes
Funciones de la Administración de Redes
 
Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.
 

Similar a MVC vs MVP (20)

MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
3 1 mde mda
3 1 mde mda3 1 mde mda
3 1 mde mda
 
S01-s1-MVC.pptx
S01-s1-MVC.pptxS01-s1-MVC.pptx
S01-s1-MVC.pptx
 
S8 arely medina_power_point
S8 arely medina_power_pointS8 arely medina_power_point
S8 arely medina_power_point
 
Android mvp
Android mvpAndroid mvp
Android mvp
 
Diseño de software
Diseño de softwareDiseño de software
Diseño de software
 
Uml
UmlUml
Uml
 
Arquitectura del software
Arquitectura del softwareArquitectura del software
Arquitectura del software
 
Fundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a ObjetosFundamentos de Diseño Orientado a Objetos
Fundamentos de Diseño Orientado a Objetos
 
Patrones de-diseño
Patrones de-diseñoPatrones de-diseño
Patrones de-diseño
 
Diseno Software
Diseno SoftwareDiseno Software
Diseno Software
 
Mda mde
Mda   mdeMda   mde
Mda mde
 
Juan velasquez
Juan velasquezJuan velasquez
Juan velasquez
 
1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño1 3 ingenieria software y patrones de diseño
1 3 ingenieria software y patrones de diseño
 
Mda
MdaMda
Mda
 
Desarrollo de software
Desarrollo de softwareDesarrollo de software
Desarrollo de software
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 

Último

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

MVC vs MVP

  • 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.

Notas del editor

  1. 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.
  2. ¿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.
  3. ¿Han escuchado sobre Patrón de Arquitectura? ¿Qué patrones de Arquitectura Conocen?
  4. 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.
  5. Información extraída de Wikipedia.
  6. Información extraída de Wikipedia.
  7. Como podemos ver ambos modelos parecen bastante similares pero ofrecen importantes diferencias
  8. 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.
  9. 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.
  10. Vamos a ver un posible ejemplo de implementación en el que el usuario dispone de un formulario dónde puede introducir contactos.