clase 07b patrones_diseno_ejemplo
TRANSCRIPT
1
Patrones de DiseñoUn Ejemplo Ilustrado
(Arquitectura de Software para Practicantes)
Universidad de los AndesDemián Gutierrez
Marzo 2013
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)
3
Patrones de Diseño en AcciónVersión 1: Las caras felices son imágenes
¿cuál es la responsabilidad de cada clase?
4
Ejemplo: Patrones de Diseño en Acción(Singleton / Factory)
¡sólo puede haber uno!
5
Ejemplo: Patrones de Diseño en Acción(Command)
El modelo sólo se modifica por medio de un comando
6
Ejemplo: Patrones de Diseño en Acción(Decorator)
O bien, cómo ponerle un marco a una ventana
7
Ejemplo: Patrones de Diseño en Acción(Flyweight / Factory)
Compartiendo Objetos Inmutables¿Excel?
8
Ejemplo: Patrones de Diseño en Acción(Factory)
¿Cómo construir caras... sin borde?
Escondido
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?
10
¿Versión 2?
Patrones de Diseño en Acción
11
Patrones de Diseño en AcciónVersión 2: Caras felices con gráficos vectoriales
“Carita-Feliz-Landia” se vuelve “Vectorial”
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)
13
Ejemplo: Patrones de Diseño en Acción(Factory)
¿Cómo queda el Factory ahora?
Escondido
El Cliente no nota el cambio
14
Ejemplo: Patrones de Diseño en Acción(Composite)
¿Cómo dividir la complejidad a lo largo deun grupo de objetos compuestos?
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?
16
Ejemplo: Patrones de Diseño en Acción(Composite)
Un caso real
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
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
19
Gracias
¡Gracias!