Este documento habla sobre los patrones de diseño en ingeniería de software. Explica que los patrones de diseño describen soluciones a problemas comunes de diseño orientado a objetos. Se detalla que existen tres tipos principales de patrones: patrones creacionales, estructurales y de comportamiento. Además, se proporciona un formato estándar para describir cada patrón de diseño.
1. Universidad Centroccidental “Lisandro Alvarado”
Decanato de Ciencias y Tecnología
Departamento de Sistemas
Laboratorio I
Unidad IV
Patrones de Diseño
2. Patrones de Diseño
¿ Que es un patrón de diseño?
Los patrones de diseño son descripciones de las comunicaciones de objetos y
clases que son personalizadas para resolver un problema general de diseño en un
contexto particular.
Un patrón de diseño nombra, abstrae e identifica los aspectos clave de un diseño
estructurado, común, que lo hace útil para la creación de diseños orientados a
objetos reutilizables.
Los patrones de diseño identifican las clases participantes y las instancias, sus
papeles y colaboraciones, y la distribución de responsabilidades.
Cada patrón de diseño se enfoca sobre un particular diseño orientado a objetos. Se
describe cuando se aplica, las características de otros diseños y las consecuencias y
ventajas de su uso.
Los patrones de diseño se pueden utilizar en cualquier lenguaje de programación
orientado a objetos, adaptando los diseños generales a las características de la
implementación particular.
3. Patrones de Diseño
Descripción de Patrones de Diseño
Para describir los patrones de diseño en el libro “Design Patterns” de GoF se utiliza un
formato consistente. Cada patrón es dividido en secciones de acuerdo a una plantilla
que nos muestra una estructura uniforme para la información, de tal forma que los
patrones de diseño sean fáciles de aprender, comparar y utilizar, la plantilla contiene:
Intención: describe lo que se pretende conseguir con el patrón.
También Conocido como: otros nombres del mismo patrón.
Motivo: explicación justificativa de la necesidad de que el patrón exista como
entidad autónoma.
Aplicabilidad: lista de usos para los que resulta especialmente adecuado el patrón
que se describe.
Estructura: descripción gráfica de los comportamientos, acciones y relaciones de
los objetos que participan en el patrón.
Participantes: diccionario de las partes que componen el patrón.
4. Patrones de Diseño
Descripción de Patrones de Diseño
Colaboraciones: diccionario de las relaciones e interacciones entre los
participantes en un patrón.
Consecuencias: detalle de los posibles beneficios y perjuicios que pueden
derivarse del uso del patrón.
Implementación: detalle de las posibles implementaciones y catálogo de las
decisiones de diseño en la codificación de soluciones concretas basadas en el
patrón.
Código de Ejemplo: planteamiento de código práctico referido a un ejemplo (o
ejemplos) suficientemente representativo del uso del patrón.
Usos Conocidos: detalle de bibliotecas, productos y sistemas en que se ha
utilizado el patrón.
Patrones Relacionados: referencias a otros patrones que bien son directamente
utilizados por el descrito bien representan soluciones complementarias o
suplementarias al mismo.
5. Patrones de Diseño
Clasificación de Patrones de Diseño
Dado que hay muchos patrones de diseño necesitamos un modo de organizarlos. La
clasificación nos ayuda a saber lo que hace un patrón. Según el libro “Design Patterns”
de GoF existen tres categorías:
Patrones Creacionales: muestran la guía de cómo crear objetos cuando sus
creaciones requieren tomar decisiones. Estas decisiones normalmente serán
resueltas dinámicamente decidiendo que clases instanciar o sobre que objetos un
objeto delegará responsabilidades. La valía de los patrones de creación nos dice
como estructurar y encapsular estas decisiones.
Patrones Estructurales: describen las formas comunes en que diferentes tipos de
objetos pueden ser organizados para trabajar unos con otros. Se ocupan de cómo
clases y objetos son utilizados para componer estructuras de mayor tamaño.
Patrones de Comportamiento: son utilizados para organizar, manejar y combinar
comportamientos. Atañen a los algoritmos y a la asignación de responsabilidades
entre objetos.