Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grupo 1
Grupo 1
Que es un Patrn?
Cada Patrn describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el ncleo de la solucin a ese problema, de forma tal que esa solucin puede ser usada un milln de veces, sin hacerlo de la misma manera dos veces.
C. Alexander, The Timeless Way of Building, 1979
Patrones
Resea histrica
En 1979 el arquitecto Christopher Alexander aport al mundo de la arquitectura el libro The Timeless Way of Building; en l propona el aprendizaje y uso de una serie de patrones para la construccin de edificios de una mayor calidad. Ms tarde, en 1987, Ward Cunningham y Kent Beck usaron varias ideas de Alexander para desarrollar cinco patrones de interaccin hombre-ordenador (HCI) y publicaron un artculo en OOPSLA-87 titulado Using Pattern Languages for OO Programs
Resea Histrica
(Cont.)
A principios de los 90's fue cuando los patrones de diseo tuvieron un gran xito en el mundo de la informtica a partir de la publicacin del libro Design Patterns escrito por el GoF (Gang of Four) compuesto por Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides, en el que se recogan 23 patrones diseo comunes.
El nombre: en el cual se describen los diseos, soluciones y consecuencias. El problema: cuando se aplica el patrn. La solucin: descripcin abstracta de la solucin (NO existe una implementacin en concreto). Las consecuencias: es el resultado de aplicar el patrn de diseo seleccionado.
Patrones de diseo
Los patrones de diseo representan soluciones a problemas que surgen cuando se desarrolla software en un contexto particular. Patrones = par Problema/Solucin dentro de un Contexto
Proporcionar catlogos de elementos reusables en el diseo de sistemas software. Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Formalizar un vocabulario comn entre diseadores. Estandarizar el modo en que se realiza el diseo. Facilitar el aprendizaje de las nuevas generaciones de diseadores condensando conocimiento ya existente.
Nombre y clasificacin de un patrn Intencin As Know as (A.K.A) Motivacin Aplicabilidad Estructura Participantes Colaboraciones
Considerar como el patrn de diseo resuelve el problema. Analizar las intenciones (Seleccionar los que me convienen para resolver el problema). Estudiar como se relacionan los patrones. Estudiar los propsitos de los patrones. Examinar si existen causas para el rediseo. Considerar que puede ser variable en el patrn seleccionado.
Leer una vez mas el patrn seleccionado para tener una vista global del patrn. Analizar en mas profundidad las secciones de Estructuras, Participantes y Colaboradores para ver como se relacionan. Ver un ejemplo en concreto del patrn para tener una idea menos abstracta.
Elegir nombres a los patrones que estn acordes al contexto del problema. Definir las clases las cuales pueden ser cambiadas por el patrn. Defina los nombres especficos en la aplicacin para las operaciones del patrn. Implemente las operaciones que realizaran las responsabilidades y los colaboraciones en el patrn.
Patrn COMANDO
Patrn COMANDO
Patrn de diseo que pertenece a los patrones de comportamiento.
Patrn COMANDO
Problema
Se quiere manejar
o
o o o
Distintos tipos de objetos con una misma llamada. Operaciones de deshacer. Colas de peticiones o comandos. Solicitudes en tiempos distintos. Comandos dinmicamente
Patrn COMANDO
Solucin
Encapsular una operacin en un objeto. Cmo? A cada comando le definimos una clase que lo
represente y le asignamos la responsabilidad de ejecutarse a si mismo.
Patrn COMANDO
Por ejemplo
Estructura / Participantes
Solicita el comando para realizar la solicitud. Superclase. Define las operaciones.
Patrn COMANDO
Colaboraciones
o
Patrn COMANDO
Colaboraciones
o
Patrn COMANDO
Colaboraciones
o
Patrn COMANDO
Colaboraciones
o
Patrn COMANDO
Por ejemplo
ManejadorComandos +cargar(Comando) Comando +crear(Documento) +ejecutar() +deshacer()
Patrn COMANDO
Por ejemplo
Patrn COMANDO
Consecuencias
o
o o
Los comandos son objetos que se pueden manejar y extender como cualquier otro objeto. Se desliga el objeto cliente del objeto receptor. Se pueden ensamblar comandos en comandos compuestos. Aadir ms comandos es ms fcil porque no se rompe ninguna dependencia.
Patrn COMANDO
Por ejemplo
Patrn COMANDO
Usos conocidos
o
Trabajos de impresin Para encapsular toda la informacin necesaria para la impresin. Programas de Dibujo
Patrn STRATEGY
Patrn Strategy
El patrn Strategy es un patrn de comportamiento que permite mantener un conjunto de algoritmos encapsulados en un contexto determinado Context, de los que el objeto cliente puede elegir aquel que le conviene e intercambiarlo segn sus necesidades en cualquier momento o puede ser el mismo objeto Context el que elija el ms apropiado para cada situacin.
Contexto Problema/Solucin
Contexto/problema de la estrategia Cmo disear el sistema para que varen los algoritmos o las polticas, pero que estn relacionados a la vez? Cmo disear el sistema para que, segn la capacidad, cambien estos algoritmos o polticas? Solucin Definir cada algoritmo/poltica/estrategia en una clase separada, con un interfaz comn.
Caractersticas
Las estrategias suelen estar unidas bajo una clase del contexto La decisin se realiza normalmente mediante algn parmetro que le enva el cliente. No se requiere que el mensaje que se enva al objeto del contexto y el del objeto de la estrategia tengan el mismo nombre, pero es comn.
Ejemplo
Caractersticas
Es comn requerir que el paso del objeto del contexto tenga una referencia a s mismo (this), encendiendo al objeto de la estrategia, de manera que ste tenga visibilidad del parmetro al objeto del contexto, para la colaboracin adicional.
Ejemplo
Ejemplo
Caractersticas
Las estructuras utilizadas por el patrn strategy suelen ser polimrficas y con interfaces que permiten que los algoritmos se mantengan conectados. Proporcionan variaciones protegidas con respecto a algoritmos que cambiaban
Ejemplo