Está en la página 1de 41

Patrones

Francisco Villar Yasmn lvarez Gustavo Rodrguez

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.

Cuatro elementos esenciales en un patrn

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

Objetivos de los patrones


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.

Plantilla de Descripcin de un patrn


Nombre y clasificacin de un patrn Intencin As Know as (A.K.A) Motivacin Aplicabilidad Estructura Participantes Colaboraciones

Plantilla de Descripcin de un patrn (Cont.)


Consecuencias Implementacin Cdigo de ejemplo Usos Conocidos Patrones relacionados

Organizacin del Catalogo de Patrones

Como seleccionar un patrn de diseo?

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.

Como utilizar un patrn de diseo?

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.

Como utilizar un patrn de diseo? (Cont.)

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.

Tambin se conoce como patrn Accin o Transaccin.

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.

Crea un objeto Comando Concreto y fija su receptor

Sabe realizar las operaciones asociadas al realizar una solicitud.

Define una ligadura entre un objeto receptor y una accin.

Patrn COMANDO

Colaboraciones
o

El cliente crea un objeto Comando y especifica su destinatario.

Patrn COMANDO

Colaboraciones
o

Un objeto Manejador almacena el objeto de Comando.

Patrn COMANDO

Colaboraciones
o

El objeto Manejador llama a Ejecutar() el Comando.

Patrn COMANDO

Colaboraciones
o

El objeto Comando invoca las operaciones necesarias para resolver la solicitud.

Patrn COMANDO
Por ejemplo
ManejadorComandos +cargar(Comando) Comando +crear(Documento) +ejecutar() +deshacer()

Documento +crear() +escribir() +borrar()

EditComando +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

Para encapsular cada accin dentro de un


objeto, de forma que el programa sea capaz revertir operaciones recorriendo dichos objetos en orden inverso.

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.

Ejemplo: Formas de calcular el total de un pago

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

Creando una estrategia a travs de un Factory


Existen diversos algoritmos o estrategias, y pueden cambiar en un cierto plazo. Quin debe crear la estrategia? Un acercamiento directo es aplicar el patrn Factory Ayuda mantener alta la cohesin entre las estrategias

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

También podría gustarte