SlideShare a Scribd company logo
1 of 19
Download to read offline
Patrones de Diseño
Un Ejemplo Ilustrado
 (Arquitectura de Software para Practicantes)




         Universidad de los Andes
                Demián Gutierrez
                  Marzo 2013
                                                1
Patrones de Diseño en Acción
Versión 1: Las caras felices son imágenes




     ¡Bienvenidos a “Carita-Feliz-Landia”!
    ...donde todas las caritas son felices...
           (ejem, bueno, casi todas)            2
Patrones de Diseño en Acción
Versión 1: Las caras felices son imágenes




          ¿cuál es la responsabilidad de cada clase?   3
Ejemplo: Patrones de Diseño en Acción
(Singleton / Factory)




                 ¡sólo puede haber uno!   4
Ejemplo: Patrones de Diseño en Acción
(Command)




     El modelo sólo se modifica por medio de un comando   5
Ejemplo: Patrones de Diseño en Acción
(Decorator)




        O bien, cómo ponerle un marco a una ventana   6
Ejemplo: Patrones de Diseño en Acción
(Flyweight / Factory)




             Compartiendo Objetos Inmutables
                        ¿Excel?                7
Ejemplo: Patrones de Diseño en Acción
(Factory)




                                           Escondido




            ¿Cómo construir caras... sin borde?        8
Ejemplo: Patrones de Diseño en Acción
(Builder)

   Ahora que sabemos
     cómo construir
     bordes y caras
    ¿cómo podemos
 combinar ambas cosas?




      ¿Cómo construir objetos complejos de forma fácil?
                                                          9
Patrones de Diseño en Acción




                 ¿Versión 2?




                               10
Patrones de Diseño en Acción
Versión 2: Caras felices con gráficos vectoriales




 “Carita-Feliz-Landia” se vuelve “Vectorial”
                                                    11
Patrones de Diseño en Acción
Versión 2: Caras felices con gráficos vectoriales

                           Ojo
                          (Eye)               Cara
                                          (DrawnFace)

         Círculo
         (Circle)




           Círculo
           (Circle)

                                                    Sonrisa
                                                    (Smile)

               Círculo
               (Circle)




 “Carita-Feliz-Landia” se vuelve “Vectorial”
                                                              12
Ejemplo: Patrones de Diseño en Acción
(Factory)




     El Cliente no
        nota el
        cambio
                                                     Escondido

                     ¿Cómo queda el Factory ahora?               13
Ejemplo: Patrones de Diseño en Acción
(Composite)




         ¿Cómo dividir la complejidad a lo largo de
            un grupo de objetos compuestos?           14
Ejemplo: Patrones de Diseño en Acción
(Composite)




          En realidad es un poquito más complejo
            ¿A alguien se le ocurre un refactor?   15
Ejemplo: Patrones de Diseño en Acción
(Composite)




                     Un caso real
                                        16
Resumen


             Singleton (119 / --69---)
             Composite (151 / --85--)
                Factory (99 / --59--)
             Command (215 / --117--)
               Facade (171 / --95--)
              Decorator (161 / --90--)
              Flyweight (179 / --99--)
                Builder (89 / --54--)
                Las páginas son referencias a la
   versión en español del libro de Patrones de Diseño de GoF
                                                               17
Resumen

   Hay que pensar menos en el “código menudo”
          (if, else, while, for, etcétera)

              Y más en términos de:

                    Estructura:
       ¿Cómo organizar el código y distribuir
  responsabilidades a lo largo de distintas clases?
               Patrones de Diseño:
        ¿Qué patrones me pueden ayudar a
      estructurar el código adecuadamente?            18
Gracias




   ¡Gracias!


               19

More Related Content

What's hot (11)

Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001Arquitectura software.taxonomias.definiciones.001
Arquitectura software.taxonomias.definiciones.001
 
Introducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelosIntroducción a la ingeniería dirigida por modelos
Introducción a la ingeniería dirigida por modelos
 
Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001Arquitectura software.taxonomias.comportamiento.001
Arquitectura software.taxonomias.comportamiento.001
 
Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002Arquitectura software.taxonomias.construccion.002
Arquitectura software.taxonomias.construccion.002
 
01. Prototipado rápido: teoría
01. Prototipado rápido: teoría01. Prototipado rápido: teoría
01. Prototipado rápido: teoría
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Diseño de WebApps
Diseño de WebAppsDiseño de WebApps
Diseño de WebApps
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 
Algoritmos programacion
Algoritmos programacionAlgoritmos programacion
Algoritmos programacion
 
Modelos de dominio
Modelos de dominioModelos de dominio
Modelos de dominio
 
MDE & DSLs
MDE & DSLsMDE & DSLs
MDE & DSLs
 

Viewers also liked

Viewers also liked (20)

Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Patrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & FiltersPatrones Arquitecturales: Pipes & Filters
Patrones Arquitecturales: Pipes & Filters
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Diseno de la arquitectura
Diseno de la arquitecturaDiseno de la arquitectura
Diseno de la arquitectura
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Patrones arquitectónicos layers
Patrones arquitectónicos layersPatrones arquitectónicos layers
Patrones arquitectónicos layers
 
Patron de Arquitectura Broker
Patron de Arquitectura BrokerPatron de Arquitectura Broker
Patron de Arquitectura Broker
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 

Similar to Clase 07b patrones_diseno_ejemplo

Hacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHernan Wilkinson
 
Manual de Identidad Visual: Desadaptados
Manual de Identidad Visual: DesadaptadosManual de Identidad Visual: Desadaptados
Manual de Identidad Visual: Desadaptadosjoaquinmansilla2
 
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptx
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptxS4-X-MODELANDO EL DOMINIO-2015-2-v1.pptx
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptxAlejandroGiraldoDuqu
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareYazmin RuBo
 
Sesion02_DW.pdf
Sesion02_DW.pdfSesion02_DW.pdf
Sesion02_DW.pdfUSAT
 
Sesion02_DW.pdf
Sesion02_DW.pdfSesion02_DW.pdf
Sesion02_DW.pdfUSAT
 
Artículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEArtículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEtorrubia
 
ES Composite Functions by Slidesgo.pptx
ES Composite Functions by  Slidesgo.pptxES Composite Functions by  Slidesgo.pptx
ES Composite Functions by Slidesgo.pptxRainSan2
 
Las cosas que uno tiene que saber para vivir .pptx
Las cosas que uno tiene que saber para vivir .pptxLas cosas que uno tiene que saber para vivir .pptx
Las cosas que uno tiene que saber para vivir .pptxfabianalfredobaldivi
 
Designer vs Front-end - DrupalCampES 2018 Alicante
Designer vs Front-end - DrupalCampES 2018 AlicanteDesigner vs Front-end - DrupalCampES 2018 Alicante
Designer vs Front-end - DrupalCampES 2018 AlicanteLa Drupalera
 
Definiendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de WardleyDefiniendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de WardleyDavid Arcos
 
Tutorial efecto lente de coreldraw
Tutorial efecto lente de coreldrawTutorial efecto lente de coreldraw
Tutorial efecto lente de coreldrawLvalen1
 
Tutorial Efecto Lente De Coreldraw
Tutorial Efecto Lente De CoreldrawTutorial Efecto Lente De Coreldraw
Tutorial Efecto Lente De CoreldrawAngelina Leal
 
Aplicando lego serious play para togaf 9.1 architecture development method
Aplicando lego serious play para togaf 9.1 architecture development methodAplicando lego serious play para togaf 9.1 architecture development method
Aplicando lego serious play para togaf 9.1 architecture development methodGustavo De la Cruz Tovar
 
Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Yaskelly Yedra
 

Similar to Clase 07b patrones_diseno_ejemplo (20)

Hacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con software
 
Manual de Identidad Visual: Desadaptados
Manual de Identidad Visual: DesadaptadosManual de Identidad Visual: Desadaptados
Manual de Identidad Visual: Desadaptados
 
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptx
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptxS4-X-MODELANDO EL DOMINIO-2015-2-v1.pptx
S4-X-MODELANDO EL DOMINIO-2015-2-v1.pptx
 
Google traductor2
Google traductor2Google traductor2
Google traductor2
 
Introducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de softwareIntroducción a los Patrones de diseño de software
Introducción a los Patrones de diseño de software
 
Sesion02_DW.pdf
Sesion02_DW.pdfSesion02_DW.pdf
Sesion02_DW.pdf
 
Sesion02_DW.pdf
Sesion02_DW.pdfSesion02_DW.pdf
Sesion02_DW.pdf
 
Artículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSEArtículo 1 sobre la plataforma ECLIPSE
Artículo 1 sobre la plataforma ECLIPSE
 
ES Composite Functions by Slidesgo.pptx
ES Composite Functions by  Slidesgo.pptxES Composite Functions by  Slidesgo.pptx
ES Composite Functions by Slidesgo.pptx
 
Las cosas que uno tiene que saber para vivir .pptx
Las cosas que uno tiene que saber para vivir .pptxLas cosas que uno tiene que saber para vivir .pptx
Las cosas que uno tiene que saber para vivir .pptx
 
Designer vs Front-end - DrupalCampES 2018 Alicante
Designer vs Front-end - DrupalCampES 2018 AlicanteDesigner vs Front-end - DrupalCampES 2018 Alicante
Designer vs Front-end - DrupalCampES 2018 Alicante
 
Lienzo de modelos de negocios.
Lienzo de modelos de negocios.Lienzo de modelos de negocios.
Lienzo de modelos de negocios.
 
Present 1
Present 1Present 1
Present 1
 
Definiendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de WardleyDefiniendo Estrategia: Mapas de Wardley
Definiendo Estrategia: Mapas de Wardley
 
manual-autodesk-inventor-2012-
 manual-autodesk-inventor-2012- manual-autodesk-inventor-2012-
manual-autodesk-inventor-2012-
 
ULSA Nov/11
ULSA Nov/11ULSA Nov/11
ULSA Nov/11
 
Tutorial efecto lente de coreldraw
Tutorial efecto lente de coreldrawTutorial efecto lente de coreldraw
Tutorial efecto lente de coreldraw
 
Tutorial Efecto Lente De Coreldraw
Tutorial Efecto Lente De CoreldrawTutorial Efecto Lente De Coreldraw
Tutorial Efecto Lente De Coreldraw
 
Aplicando lego serious play para togaf 9.1 architecture development method
Aplicando lego serious play para togaf 9.1 architecture development methodAplicando lego serious play para togaf 9.1 architecture development method
Aplicando lego serious play para togaf 9.1 architecture development method
 
Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)Generador de Patrones de Diseño (GEPADI)
Generador de Patrones de Diseño (GEPADI)
 

More from Demián Gutierrez

Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Demián Gutierrez
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosDemián Gutierrez
 
Clase 04b requerimientos documentacion
Clase 04b requerimientos documentacionClase 04b requerimientos documentacion
Clase 04b requerimientos documentacionDemián Gutierrez
 

More from Demián Gutierrez (6)

Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 04b requerimientos documentacion
Clase 04b requerimientos documentacionClase 04b requerimientos documentacion
Clase 04b requerimientos documentacion
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 

Recently uploaded

Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Recently uploaded (20)

Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

Clase 07b patrones_diseno_ejemplo

  • 1. Patrones de Diseño Un Ejemplo Ilustrado (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013 1
  • 2. Patrones de Diseño en Acción Versión 1: Las caras felices son imágenes ¡Bienvenidos a “Carita-Feliz-Landia”! ...donde todas las caritas son felices... (ejem, bueno, casi todas) 2
  • 3. Patrones de Diseño en Acción Versión 1: Las caras felices son imágenes ¿cuál es la responsabilidad de cada clase? 3
  • 4. Ejemplo: Patrones de Diseño en Acción (Singleton / Factory) ¡sólo puede haber uno! 4
  • 5. Ejemplo: Patrones de Diseño en Acción (Command) El modelo sólo se modifica por medio de un comando 5
  • 6. Ejemplo: Patrones de Diseño en Acción (Decorator) O bien, cómo ponerle un marco a una ventana 6
  • 7. Ejemplo: Patrones de Diseño en Acción (Flyweight / Factory) Compartiendo Objetos Inmutables ¿Excel? 7
  • 8. Ejemplo: Patrones de Diseño en Acción (Factory) Escondido ¿Cómo construir caras... sin borde? 8
  • 9. Ejemplo: Patrones de Diseño en Acción (Builder) Ahora que sabemos cómo construir bordes y caras ¿cómo podemos combinar ambas cosas? ¿Cómo construir objetos complejos de forma fácil? 9
  • 10. Patrones de Diseño en Acción ¿Versión 2? 10
  • 11. Patrones de Diseño en Acción Versión 2: Caras felices con gráficos vectoriales “Carita-Feliz-Landia” se vuelve “Vectorial” 11
  • 12. Patrones de Diseño en Acción Versión 2: Caras felices con gráficos vectoriales Ojo (Eye) Cara (DrawnFace) Círculo (Circle) Círculo (Circle) Sonrisa (Smile) Círculo (Circle) “Carita-Feliz-Landia” se vuelve “Vectorial” 12
  • 13. Ejemplo: Patrones de Diseño en Acción (Factory) El Cliente no nota el cambio Escondido ¿Cómo queda el Factory ahora? 13
  • 14. Ejemplo: Patrones de Diseño en Acción (Composite) ¿Cómo dividir la complejidad a lo largo de un grupo de objetos compuestos? 14
  • 15. Ejemplo: Patrones de Diseño en Acción (Composite) En realidad es un poquito más complejo ¿A alguien se le ocurre un refactor? 15
  • 16. Ejemplo: Patrones de Diseño en Acción (Composite) Un caso real 16
  • 17. Resumen Singleton (119 / --69---) Composite (151 / --85--) Factory (99 / --59--) Command (215 / --117--) Facade (171 / --95--) Decorator (161 / --90--) Flyweight (179 / --99--) Builder (89 / --54--) Las páginas son referencias a la versión en español del libro de Patrones de Diseño de GoF 17
  • 18. Resumen Hay que pensar menos en el “código menudo” (if, else, while, for, etcétera) Y más en términos de: Estructura: ¿Cómo organizar el código y distribuir responsabilidades a lo largo de distintas clases? Patrones de Diseño: ¿Qué patrones me pueden ayudar a estructurar el código adecuadamente? 18
  • 19. Gracias ¡Gracias! 19