Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clase 07b patrones_diseno_ejemplo

1,161 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Clase 07b patrones_diseno_ejemplo

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

×