Clase 07b patrones_diseno_ejemplo

Preview:

Citation preview

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!

Recommended