Patrones GoF (Gang of Four) Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Recordando... • GRASP:Patrones de principios generales para asignar responsabilidades. • Es un conjunto de guias que determinan como se deben repartir las responsabilidades. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Patrones Gang of Four Propuestos por Gamma, Helm, Johnson, Vlissides. • Adaptador. • Factoría • Estrategia. • Composite. • Fachada. • Observador. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Adaptador • Problema: Como unir interfaces incompatibles, o proveer una interfaz similar con componentes de diferentes interfaces. • Respuesta: Convierta la interfaz original de un componente en otra interfaz y una a través de adaptadores. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Adaptador Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Fabrica • Problema: Quien debe ser el responsable de crear un objeto cuando implica consideraciones o lógica especial. • Respuesta: Cree una fabrica que se encargue de esto (Esto lo permite la fabricación pura). Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Fabricación Pura • Problema: A quien le asigno un conjunto de responsabilidades relacionadas. Las cuales el patrón experto no las agrupa adecuadamente. • Respuesta: Crear clases artificiales que agrupan dichas funcionalidades relacionadas • Contraindicaciones: ¡Peligro!, puede convertir POO en funcional. • Ejemplo: Quien es la encargada de realizar la persistencia de un objeto venta. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Fabrica Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Singleton • Problema: Existen objetos que deben ser accedidos desde un punto global y único • Respuesta: Atributos y métodos estáticos Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Singleton Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Estrategia • Problema: Como se diseña para protegerse de variaciones de algoritmos o políticas • Respuesta: Cada política o algoritmo se implementa en una clase de diferente con una interfaz común Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Estrategia Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Composite • Problema: Como tratar con una composición de objetos del mismo tipo como si fuera un objeto atómico • Respuesta: Defina clases para los objetos compuestos y atómicos, los cuales debe implementar la misma clase. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Composite Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Fachada • Problema: Como relacionar diferentes subsistemas si no deseo mas acoplamiento o algunos subsistemas son propensos a cambios. • Respuesta: Cree fachadas que representen un subsistema. Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Fachada Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007 Lecturas Recomendadas • Applying UML and Patterns: An Introduction to Object­ Oriented Analysis and Design and Iterative Development, Craig Larman. Tercera Edición (Capitulo 26). • Head First Design Patterns, Eric Freeman & Elisabeth Freeman (Capitulos 4, 5, 7 y 9 ). Escuela de Ingeniería de Sistemas y Computación Desarrollo de Software II Agosto – Diciembre 2007