Introducción a los patrones de diseño software
www.federicopeinado.es
Depto. de Ingeniería del Software e
Inteligencia Artificial
disia.fdi.ucm.es
Facultad de Informática
www.fdi.ucm.es
Universidad Complutense de Madrid
www.ucm.es
Conviene
diseñar e implementar elementos
software que puedan usarse para construir
muchos programas diferentes
• Ahorra esfuerzo (evitamos “reinventar la rueda”)
• Permiteconcentrarse siempre en funcionalidad nueva
• Mejora indirectamente la calidad (hay más revisiones)
¡Ojo!
Desarrollar software reutilizable es más
difícil y costoso que no reutilizable
• Implica resolver una familia de problemas en lugar de
resolver un único problema particular
• Implicar saber programar software flexible y prever los
ejes de cambio
Laboratorio de Programación deSistemas – Patrones de Diseño Software
2
Análisis
• Requisitos de la aplicación
• Especificaciones funcionales
Diseño de alto nivel
• Arquitecturas software
• Armazones software (frameworks)
Diseño de bajo nivel
• Patrones de diseño software
Código
•
•
•
•
Componentes software
Bibliotecas de código
PE en funciones / POO en métodos
“Cortar ypegar”
Laboratorio de Programación de Sistemas – Patrones de Diseño Software
3
Laboratorio de Programación de Sistemas – Patrones de Diseño Software
4
El DOO es difícil, y el DOO reutilizable más difícil todavía
Los desafíos de diseño se repiten y los diseñadores con
experiencia suelen acabar conociendo las mejores soluciones
• Esas buenas ideas de diseño se conocen comopatrones de diseño
Definiciones de patrones de diseño
• Originalmente, en Arquitectura
(Alexander, 1977)
“Cada patrón describe un problema que ocurre una y otra vez en
nuestro entorno, y luego describe el núcleo de la solución a dicho
problema, de manera que puedas usar esa solución un millón de veces
sin que en realidad lo estés resolviendo dos veces de la misma forma”
•Posteriormente, en Ingeniería del Software
(Gamma, Helm, Johnson y Vlissides, 1995) alias Gang of Four (GoF)
“Un patrón de diseño nombra, abstrae e identifica los aspectos
fundamentales de una estructura común de diseño que la hacen útil para
la creación de un diseño orientado a objetos reutilizable”
Laboratorio de Programación de Sistemas – Patrones de Diseño Software
5
Nivel/TipoCreación
Estructura
Comportamiento
Clase
Factory method/
Método de fabricación
Adapter/Clase
adaptadora
Interpreter/Intérprete
Template method/Método
plantilla
Objeto
Abstract factory/
Fábrica abstracta
Builder/Constructor
virtual
Prototype/Prototipo
Singleton/Ejemplar
único
Adapter/Objeto
adaptador
Bridge/Puente
Composite/Objeto
compuesto
Decorator/DecoradorFacade/Fachada
Flyweight/Peso ligero
Proxy/Intermediario
Chain of responsability/
Cadena de responsabilidad
Command/Orden
Iterator/Iterador
Mediator/Mediador
Memento/Recuerdo
Observer/Observador
State/Estado
Strategy/Estrategia
Visitor/Visitante
Laboratorio de Programación de Sistemas – Patrones de Diseño Software
6
Nombre
• Suele usarse el original en inglés del librode GoF
• Se han convertido en vocabulario común en DOO
Propósito
• Descripción de la situación problemática o compleja en la que
parece conveniente aplicar el patrón
Solución
• Estructuras de diseño involucradas
Elementos
Relaciones entre estos elementos
Responsabilidades y colaboraciones que mantienen estos elementos
Consecuencias
• Discusión acerca delas ventajas y los inconvenientes del patrón
Coste asociado, flexibilidad conseguida, alternativas que hay o no hay…
Laboratorio de Programación de Sistemas – Patrones de Diseño Software
7
Anticípate a las situaciones que te puedan obligar a
modificar el diseño
Decide qué cambios te gustaría poder hacer en el
futuro sin necesidad de modificar el diseño
Flexibiliza aquello...
Regístrate para leer el documento completo.