clase 07b patrones_diseno_ejemplo

19
1 Patrones de Diseño Un Ejemplo Ilustrado (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013

Upload: demian-gutierrez

Post on 28-Jun-2015

347 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Clase 07b patrones_diseno_ejemplo

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

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

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

4

Ejemplo: Patrones de Diseño en Acción(Singleton / Factory)

¡sólo puede haber uno!

Page 5: Clase 07b patrones_diseno_ejemplo

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

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

7

Ejemplo: Patrones de Diseño en Acción(Flyweight / Factory)

Compartiendo Objetos Inmutables¿Excel?

Page 8: Clase 07b patrones_diseno_ejemplo

8

Ejemplo: Patrones de Diseño en Acción(Factory)

¿Cómo construir caras... sin borde?

Escondido

Page 9: Clase 07b patrones_diseno_ejemplo

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

10

¿Versión 2?

Patrones de Diseño en Acción

Page 11: Clase 07b patrones_diseno_ejemplo

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

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

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

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

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

16

Ejemplo: Patrones de Diseño en Acción(Composite)

Un caso real

Page 17: Clase 07b patrones_diseno_ejemplo

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

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

19

Gracias

¡Gracias!