Desarrollo de Software II Febrero – Junio 2008 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 Febrero – Junio 2008 Patrones Gang of Four Propuestos por Gamma, Helm, Johnson, Vlissides. • Adaptador. • Factoria. • Estrategia. • Composite. • Fachada. • Observador.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Adaptador • Problema: C omo unir interfaces incompatibles, o proveer una interfaz similar con componentes de diferentes interfaces. • R es pues ta: C onvierta la interfaz original de un componente en otra interfaz y una a travez de adaptadores.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Adaptador
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Fabrica • Problema: Q uien debe ser el responsable de crear un objeto cuando implica consideraciones o logica especial. • R es pues ta: C ree una fabrica que se encarge de esto (Esto lo permite la fabricacion pura).
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Fabricación Pura
• Problema: A quien le asigno un conjunto de
responsabilidades relacionadas. Las cuales el patron experto no las agrupa adecuadamente. • R es pues ta: C rear clas es artificiales que agrupan dichas funcionalidades relacionadas • C ontraindicaciones : ¡P eligro!, puede convertir P O O en funcional. • Ejemplo: Q uien es la encargada de realizar la persistencia de un objeto venta.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Fabrica
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Singleton • Problema: E xisten objetos que deben ser accedidos desde un punto global y unico. • R es pues ta: Atributos y metodos estaticos.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Singleton
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Estrategia • Problema: Como se diseña para protegerse de variaciones de algoritmos o politicas. • Respuesta: Cada politica o algoritmo se implementa en una clase de diferente con una interfaz comun.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Estrategia
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Composite • Problema: Como tratar con una composicion de objetos del mismo tipo como si fuera un objeto atomico. • Respuesta: Defina clases para los objetos compuetos y atomicos, los cuales debe implementar la misma clase.
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 Composite
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 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 Febrero – Junio 2008 Fachada
Escuela de Ingeniería de Sistemas y Computación
Desarrollo de Software II Febrero – Junio 2008 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 ).