Patrones de Diseño Marco Teórico Introductorio Contenido

Anuncio
Patrones de Diseño
Marco Teórico Introductorio
Diego Andrés Asenjo González
Alejandro Ríos Peña
Contenido
¿Qué son los patrones de Diseño?..........................1
Clasificación de los patrones de diseño...................3
Patrones de Creación.. ...................................4
Patrones Estructurales....................................4
Patrones de Comportamiento................................5
¿Qué son los patrones de Diseño?
Los patrones de diseño son herramientas que proveen
facilidades para hacer software reutilizable y de buena
calidad. Cada patrón describe un problema que ocurre
repetidamente en nuestro entorno, y describe el núcleo de
la solución a ese problema, de tal forma que ésta pueda ser
usada un millón de veces, sin hacer el mismo trabajo dos
veces [ 1 ]. Esto sucede porque los diseñadores expertos en
orientación a objetos (y también otros diseñadores de
software ) van formando un amplio repertorio de principios
generales y de expresiones que los guían al crear el
software. A unos y a otros podemos darles el nombre de
patrones si se codifican en un formato estructurado que
describe el problema y su solución, y si se les asigna un
nombre [ 2 ]. Otra definición, bastante simple, dice que
un patrón es una pareja de problema / solución con un
nombre y que es aplicable a otros contextos, con una
sugerencia sobre la manera de usarlo en situaciones nuevas
[ 2 ].
Específicamente los elementos de un patrón de diseño son [
3 ] :
o El nombre del patrón que se utiliza para describir el
problema y la solución en una o dos palabras. Un buen
nombre permite diseñar con un mayor grado de
abstracción y mejora también los procesos de
comunicación entre los diseñadores de software
orientado a objetos.
o El problema especifica cuando debe ser aplicado un
patrón. Explica el problema y su contexto. Puede
representar problemas específicos diseño tales como
cómo representar algoritmos por medio de objetos.
Puede describir estructuras de clases u objetos que
repetidamente son causantes de diseños inflexibles.
Algunas veces el problema puede incluir una lista de
condiciones que deben cumplirse para que sea lógico
aplicar el patrón.
o La solución describe los elementos que hacen el
diseño,
sus
relaciones,
responsabilidades
y
colaboraciones, la solución no describe un diseño o
una implementación particular, ya que un patrón es
como un molde que puede ser aplicado en muchas
situaciones diferentes. En vez de esto, los patrones
proveen una descripción abstracta de un problema y de
cómo un arreglo especial de elementos lo resuelven.
o Las consecuencias son los resultados de aplicar el
patrón. Aunque la consecuencias no son comúnmente
comentadas o conocidas durante las decisiones de
diseño, son críticas para evaluar las alternativas y
para entender los costos y beneficios de aplicar el
patrón.
Después de haber definido lo que son los patrones de diseño
podemos nombrar ciertas características básicas de ellos [
4 ]:
o Son soluciones concretas. Proponen soluciones a
problemas concretos, no son teorías genéricas.
o Son soluciones técnicas. Indican resoluciones técnicas
basadas en Programación Orientada a Objetos (POO). En
ocasiones tienen más utilidad con algunos lenguajes de
programación y en otras son aplicables a cualquier
lenguaje.
o Se utilizan en situaciones frecuentes. Ya que se basan
en la experiencia acumulada la resolver problemas
reiterativos.
o Favorecen la reutilización de código. Ayudan a
construir software basado en la reutilización, a
construir clases reutilizables. Los propios patrones
se reutilizan cada vez que se vuelven a aplicar.
o El uso de un patrón no se refleja en el código. Al
aplicar un patrón, el código resultante no tiene por
que delatar el patrón o patrones que lo inspiró. No
obstante últimamente hay múltiples esfuerzos enfocados
a la construcción de herramientas de desarrollo
basados en los patrones y frecuentemente se incluye en
los nombres de las clases el nombre del patrón en que
se basan facilitando así la comunicación entre
desarrolladores.
o Es difícil reutilizar la implementación de un patrón.
Al aplicar un patrón aparecen clases concretas que
solucionan un problema concreto y que no será
aplicable a otros problemas que requieran el mismo
patrón.
Clasificación de los patrones de diseño
Los patrones de diseño se clasifican según su propósito en
[ 4 ]:
o Patrones
de
Creación:
Tratan
la
creación
de
instancias.
o Patrones Estructurales: Tratan la relación entre
clases, la combinación clases y la formación de
estructuras de mayor complejidad.
o Patrones de Comportamiento: Tratan la interacción y
cooperación entre clases
Los patrones de diseño se pueden clasificar según su
ámbito [4]:
o De clase: Basados en la herencia de clases.
o De objeto: Basados en la utilización dinámica de
objetos.
Además de esta clasificación de los patrones, podemos decir
que existen patrones diferentes a los patrones de diseño
tales como:
o Patrones de Arquitectura. Formas de descomponer,
conectar y relacionar sistemas, trata conceptos como:
niveles, tuberías y filtros. Es un nivel de
abstracción mayor que el de los Patrones de Diseño.
o Patrones de Programación (Idioms). Patrones de bajo
nivel acerca de un lenguaje de programación concreto,
describen como implementar cuestiones concretas. Están
en un nivel de abstracción menor que los patrones de
diseño.
o Patrones de Análisis. Conjunto de reglas que permiten
modelar un sistema de forma satisfactoria.
o Patrones de Organizacionales. Describen como organizar
grupos humanos, generalmente relacionados con el
software.
o Otros Patrones de Software. Se puede hablar de
patrones de Programación concurrente, de Interfaz
Gráfica, de Organización de Código, de Optimización de
Código, de Robustez de Código, de Fase de Prueba
o Patrones de Asignación de Responsabilidades: describen
los principios fundamentales de la asignación de
responsabilidades a objetos, expresados en forma de
patrones de diseño.
o Antipatrones: tratan de, en vez de identificar
soluciones, identificar problemas o trampas comunes
que se presentan en muchos diseños con el objetivo de
que el mismo error no sea cometido dos veces.
Patrones de Creación [4]
Los patrones de creación abstraen la forma en que se crean
los objetos, de forma que permite tratar las clases a crear
de forma genérica apartando la decisión de qué clases crear
o como crearlas. Según a donde quede desplazada dicha
decisión se habla de Patrones de Clase (utiliza la herencia
para determinar la creación de las instancias, es decir en
los constructores de las clases) o Patrones de Objeto (es
en métodos de los objetos creados donde se modifica la
clase). Los patrones de Creación proveen diferentes maneras
para remover las referencias explicitas a clases concretas
del código donde deben ser utilizadas.
Patrones de Creación de Clase:
o Factoría Abstracta
o Constructor
Patrones de Creación de Objeto:
o Método Factoría
o Prototipo
o Singleton
o Conjunto de Objetos
Patrones Estructurales [ 3 ]
Los patrones estructurales tienen que ver con la forma en
que las clases y los objetos son agrupados para formar
grandes estructuras. Los patrones estructurales de clase
usan la herencia para formar interfaces o implementaciones.
Los patrones estructurales de objeto describen formas de
agrupar objetos para dar o crear nuevas funcionalidades.
Patrones Estructurales de Clase:
o Herencia Múltiple
o Adaptador de Clases
Patrones Estructurales de Objeto:
o
o
o
o
o
o
Adaptador de Clase
Puente
Compuesto
Decorador
Fachada
Flyweigth
o Proxy
Patrones de Comportamiento [ 3 ]
Los patrones de comportamiento están relacionados con los
algoritmos y con la asignación de responsabilidades entre
los objetos. Los patrones de comportamiento no describen
sólo patrones de clases y de objetos, sino que describen
los patrones de cómo éstos se comunican. Éstos patrones
caracterizan complicados flujos de control que son
difíciles de seguir o imaginar en tiempo de ejecución.
Los principales patrones de comportamiento son:
o
o
o
o
o
o
o
o
o
o
o
o
Experto
Comando
Interprete
Iterador
Mediador
Memento
Observador
Estado
Estrategia
Plantilla
Visitante
Vista / Controlador
Referencias
[ 1 ] Christopher Alexander.
[ 2 ] “UML y Patrones” Craig Larman
[ 3 ] “Design Patterns Elements of Reusable Object-Oriented
Software”
[ 4 ] www.teleprogramadores.com Guía de Patrones.
Descargar