Está en la página 1de 14

PATRONES ESTRUCTURALES

Patrones Estructurales
Describen las formas comunes en que distintos tipos de objetos pueden ser organizados para trabajar y colaborar entre ellos.

Strategy

Este patrn permite que el algoritmo a ejecutarse se seleccione en tiempo de ejecucin. Este algoritmo proporciona una familia de algoritmos, encapsula cada uno dentro de un objeto y los hace intercambiables. Esto permite que el algoritmo a ejecutarse vare en funcin del cliente que lo use.

ventajas

Es mucho ms fcil comprender cada uno de los distintos comportamientos si su implementacin est encapsulada en distintas clases, y no entrelazada en un nico mtodo. Esto permite de forma simple aadir nuevos comportamientos, y eliminar o modificar los existentes.

Cmo se implementa este patrn?

Las posibles estrategias se ejecutan dentro de un objeto de contexto que se encarga de recuperar la estrategia apropiada para el cliente. Cada una de las estrategias implementa una interfaz que define la firma del mtodo de la estrategia.

. Por ejemplo

En un banco existen distintos tipos de cuentas, para las cules se siguen distintos algoritmos a la hora de calcular sus rendimientos anuales. Un objeto encargado de calcular los rendimientos de las cuentas (en este ejemplo, ste sera el objeto de contexto) podra utilizar distintas estrategias para calcular el rendimiento de cada tipo de cuenta.

El siguiente diagrama representa el ejemplo anterior:

Si ahora se quisiese incluir un nuevo tipo de cuenta, por ejemplo una Cuenta Vivienda, simplemente habra que crear una nueva estrategia que implemente el algoritmo de clculo de rendimiento y hacer que el objeto CalculadoraRendimiento relacione este tipo de cuenta con la estrategia adecuada.
De esta manera, se ha desacoplado el clculo del rendimiento especfico de cada tipo de cuenta, separando cada uno en una clase hacindolos ms claros de entender y ms fcilmente modificables.

Iterador - Iterator
INTENCION Permite acceder secuencialmente a los elementos de estructura de datos u objetos preservando su estructura interna. CONOCIDO COMO Iterator PARTICIPANTES IIterator: Interfaz que define los mtodos de acceso a los elementos. Iterator: Clase que implementa el acceso secuencial. ICollection: Interfaz de la clase Collection. La clase Collection ofrece sus propios objetos Iterator especializados.

Iterador - Iterator

Template Method

Introduccin:

Define una operacin, el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos del algoritmo sin cambiar su estructura. Intencin: Proporcionar un mtodo que permite que las subclases redefinan parte del mtodo sin rescribirlo.

Motivacin: Cuando se construyen jerarquas de clases complejas para una aplicacin, a menudo se duplican distintas partes de cdigo. Esa situacin no es deseable, porque la intencin es reutilizar tanto cdigo como sea posible. La refactorizacin de cdigo para que los mtodos comunes estn en una superclase es un paso en la direccin correcta. El problema es que algunas veces una operacin que ha sido reautorizada confa en la informacin especifica que solamente esta disponible en una subclase. Debido a esto, los desarrolladores a menudo deciden no reautorizar y aceptar la presencia de cdigo duplicado en distintas clases.

Estructura:

AbstractTemplate: Implementa un mtodo plantilla que define el esqueleto de un algoritmo y define mtodos abstractos que implementan las subclases concretas.

ConcreteTemplate: Implementa los mtodos abstractos para realizar los pasos del algoritmo que son especficos de la subclase.

También podría gustarte