Your SlideShare is downloading. ×
0
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Clase 07a patrones_diseno
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Clase 07a patrones_diseno

395

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
395
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
56
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Patrones de Diseño(...o bien, que tiene que ver la costura con el software...) (Arquitectura de Software para Practicantes) Universidad de los Andes Demián Gutierrez Marzo 2013 1
  • 2. Diseño Arquitectónico Arquitectura del Software Diseño Arquitectónico Estilos Frameworks Arquitectónicos (Marcos) Patrones de Bibliotecas / Diseño Componentes Clases / Funciones
  • 3. ¿Qué es un Patrón de Diseño? ¿qué es un patrón? ¿qué es un patrón de diseño? 3
  • 4. ¿Qué es un Patrón de Diseño? En la costura se utilizan patrones de diseño 4
  • 5. ¿Qué es un Patrón de Diseño? arco viga atirantado colgante También se usan en ingeniería civil 5
  • 6. ¿Christopher Alexander?Patrones de Diseño en el Área de Arquitectura (Civil) Su libro “A Pattern Language” (1977) contiene 253 patrones que pueden ser aplicados a las áreas de la construcción civil y del urbanismo Trabajó en el desarrollo de patrones arquitectónicos (para ingeniería civil, no para ingeniería de software) http://www.patternlanguage.com/leveltwo/ca.htm aunque conste que sigo pensando que la comparación del software con la ingeniería civil es muy desafortunada 6
  • 7. ¿Christopher Alexander?Patrones de Diseño en el Área de Arquitectura (Civil) Christopher Alexander define un patrón de diseño como: “una descripción detallada de una solución a un problema recurrente dentro del contexto de un edificio o urbanismo” Cada patrón describe un problema que ocurre una y otra vez en un determinado contexto y describe una solución al problema de tal manera que esta solución puede ser utilizada millones de veces de forma recurrente 7
  • 8. Ingeniería del Software y Patrones de Diseño ¿qué tiene que ver todo esto con la Ingeniería del Software? 8
  • 9. Ingeniería del Software y Patrones de Diseño El diseño orientado a objetos es una tarea compleja, en especial si se buscan altos niveles de reusabilidad, mantenibilidad, calidad interna, etc No es buena idea resolver todos los problemas desde cero, usualmente es mejor reutilizar soluciones (conceptos, experiencias, etc) que ya han funcionado en el pasado* *aunque algunas veces es buena idea reinventar la rueda ;-) 9
  • 10. Ingeniería del Software y Patrones de Diseño Los arquitectos / programadores experimentados suelen hacer buenos diseños, porque conocen (de forma consciente o no) la forma de resolver los problemas comunes de diseño Los diseñadores inexpertos generalmente suelen confundirse o no conocer todas las posibles soluciones a un problema, de modo que usualmente tienen que generar soluciones desde cero 10
  • 11. ¿Qué es un Patrón de Diseño? Tiene sentido tratar de utilizar patrones para diseñar e implementar software Es lógico pensar que existen problemas típicos (con sus respectivas soluciones típicas) que se repiten a lo largo de diferentes sistemas 11
  • 12. ¿Qué es un Patrón de Diseño? Un libro clásico de la década de los 90, escrito por “The Gang of Four”, que describe a detalle un conjunto de 23 patrones de diseño Desde entonces se han Gamma, Helm, Johnson, Vlissides, realizado incontables Design Patterns, publicaciones sobre Addison-Wesley 1ra. Edición patrones de diseño 12
  • 13. ¿Qué es un Patrón de Diseño? Advertencia: El libro de Patrones de Diseño de GoF no utiliza UML para describir los patrones, utiliza OMT (Object Modeling Technique) La notación de OMT es muy parecida a la de Diagramas de Clases de UML, pero con algunas diferencias menores http://en.wikipedia.org/wiki/Object-modeling_technique 13
  • 14. Ingeniería del Software y Patrones de Diseño Después de todo... ...ustedes probablemente ya conocen varios patrones de diseño... 14
  • 15. Un patrón muy conocido Iterator<MOrder> itt = collection.iterator(); while (itt.hasNext()) { MOrder order = itt.next(); // do something with order } ¿suena esto conocido? ¿cómo se llama? 15
  • 16. Un patrón muy conocidoIterator / Iterador Iterator<MOrder> itt = collection.iterator(); while (itt.hasNext()) { MOrder order = itt.next(); // do something with order } 16
  • 17. Ejemplo: Problema Cliente 1 Cliente N Cliente 2 subsistema ¿qué problema hay aquí? 17
  • 18. Ejemplo: SoluciónPatrón Fachada Cliente 1 Cliente 2 Cliente N Fachada subsistema ...ocultar una interfaz compleja distribuida a lo largo de múltiples objetos detrás de un único objeto... 18
  • 19. Ejemplo: SoluciónPatrón Fachada (Ejemplo en el Libro) Ejemplo: Facade (171 / --95--) ¿cómo se describe un patrón de diseño? 19
  • 20. Ejemplo: SoluciónPatrón Iterador (Ejemplo en el Libro) Hay otros libros muy buenos también 20
  • 21. ¿Cómo se Dividen los Patrones de Diseño?(Según GoF) Patrones de Creación: Se relacionan con los procesos de creación de objetos (¿Cómo se obtienen y construyen los objetos?) Patrones Estructurales: Definen estructuras típicas entre clases y objetos (¿Cómo se acoplan, relacionan, componen y comunican un conjunto de clases?) Patrones de Comportamiento: Caracterizan la forma en que los objetos se distribuyen responsabilidades 21
  • 22. ¿Relaciones Entre los DistintosPatrones de Diseño? Adaptado de: Gamma, Helm, Johnson, Vlissides, Design Patterns, Addison-Wesley 1ra. Edición 22
  • 23. ¿Qué es un Anti-Patrón? Si el concepto de patrones (buenas soluciones a problemas conocidos) resulta interesante, puede que sea aún más interesante el concepto de “ anti- patrón” (errores comunes solucionando problemas William J. Brown, Raphael conocidos) C. Malveau, Hays W. McCormick, Thomas J. Mowbray Wiley / 1ra. Edición 23
  • 24. Gracias ¡Gracias! 24

×