clase 07b patrones_diseno_ejemplo
TRANSCRIPT
![Page 1: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/1.jpg)
1
Patrones de DiseñoUn Ejemplo Ilustrado
(Arquitectura de Software para Practicantes)
Universidad de los AndesDemián Gutierrez
Marzo 2013
![Page 2: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/2.jpg)
2
Patrones de Diseño en AcciónVersión 1: Las caras felices son imágenes
¡Bienvenidos a “Carita-Feliz-Landia”!...donde todas las caritas son felices...
(ejem, bueno, casi todas)
![Page 3: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/3.jpg)
3
Patrones de Diseño en AcciónVersión 1: Las caras felices son imágenes
¿cuál es la responsabilidad de cada clase?
![Page 4: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/4.jpg)
4
Ejemplo: Patrones de Diseño en Acción(Singleton / Factory)
¡sólo puede haber uno!
![Page 5: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/5.jpg)
5
Ejemplo: Patrones de Diseño en Acción(Command)
El modelo sólo se modifica por medio de un comando
![Page 6: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/6.jpg)
6
Ejemplo: Patrones de Diseño en Acción(Decorator)
O bien, cómo ponerle un marco a una ventana
![Page 7: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/7.jpg)
7
Ejemplo: Patrones de Diseño en Acción(Flyweight / Factory)
Compartiendo Objetos Inmutables¿Excel?
![Page 8: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/8.jpg)
8
Ejemplo: Patrones de Diseño en Acción(Factory)
¿Cómo construir caras... sin borde?
Escondido
![Page 9: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/9.jpg)
9
Ejemplo: Patrones de Diseño en Acción(Builder)
¿Cómo construir objetos complejos de forma fácil?
Ahora que sabemoscómo construirbordes y caras
¿cómo podemoscombinar ambas cosas?
![Page 10: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/10.jpg)
10
¿Versión 2?
Patrones de Diseño en Acción
![Page 11: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/11.jpg)
11
Patrones de Diseño en AcciónVersión 2: Caras felices con gráficos vectoriales
“Carita-Feliz-Landia” se vuelve “Vectorial”
![Page 12: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/12.jpg)
12
Patrones de Diseño en AcciónVersión 2: Caras felices con gráficos vectoriales
“Carita-Feliz-Landia” se vuelve “Vectorial”
Cara(DrawnFace)
Sonrisa(Smile)
Ojo(Eye)
Círculo(Circle)
Círculo(Circle)
Círculo(Circle)
![Page 13: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/13.jpg)
13
Ejemplo: Patrones de Diseño en Acción(Factory)
¿Cómo queda el Factory ahora?
Escondido
El Cliente no nota el cambio
![Page 14: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/14.jpg)
14
Ejemplo: Patrones de Diseño en Acción(Composite)
¿Cómo dividir la complejidad a lo largo deun grupo de objetos compuestos?
![Page 15: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/15.jpg)
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?
![Page 16: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/16.jpg)
16
Ejemplo: Patrones de Diseño en Acción(Composite)
Un caso real
![Page 17: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/17.jpg)
17
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 laversión en español del libro de Patrones de Diseño de GoF
Resumen
![Page 18: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/18.jpg)
18
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 aestructurar el código adecuadamente?
Resumen
![Page 19: Clase 07b patrones_diseno_ejemplo](https://reader031.vdocuments.pub/reader031/viewer/2022020207/558ffdb21a28abae0d8b46cd/html5/thumbnails/19.jpg)
19
Gracias
¡Gracias!