I. PATRÓN DE DISEÑO: STRATEGY

A continuación se encuentra la plantilla del patrón objeto de estudio:

1. Nombre del patrón: Strategy.

2. Clasificación del patrón: De comportamiento.

3. Intención: Definir una familia de algoritmos, encapsular cada uno de ellos y hacerlos intercambiables. Strategy permite al algoritmo variar independientemente del cliente que use este.
La idea es crear sistemas usando la composición dando mayor flexibilidad. No solamente permite encapsular una familia de algoritmos dentro de su propio conjunto de clases, sino que también permite cambiar el comportamiento en tiempo de ejecución

4. Aplicabilidad:

Este patrón se usa cuando:

•Se necesita diferentes variantes de un algoritmo. Strategy puede ser usado cuando estas variantes son implementadas como una jerarquía de clases de algoritmos.
•Cuando muchas clases relacionadas difieren solamente en su comportamiento. Strategy suministra un camino para configurar una clase con uno de muchos comportamientos.
•Cuando se desee evitar exponer la complejidad, de la estructura de datos de un algoritmo especifico.
•Cuando una clase define muchos comportamientos y estos aparecen con instrucciones condicionales en sus operaciones. En vez de muchas condicionales, mueva las bifurcaciones de las condicionales dentro de su propia clase estrategia.

5. Estructura:


6. Participantes:

•Strategy: Declara una interfaz común para dar soporte a todos los algoritmos Context, utiliza esta interfaz para llamar al algoritmo definido por un ConcreteStrategy.
•Concretestrategy: Implementa el algoritmo usando la interfaz Strategy.
•Context: se configura con un objeto ConcreteStrategy, sobre el que mantiene una referencia, puede definir una interfaz que permita a Strategy acceder a sus datos.

7. Colaboraciones:

•La estrategia y el contexto interactúan para implementar el algoritmo escogido. Un contexto puede pasar todos los datos requeridos por el algoritmo a la estrategia cuando el algoritmo es llamado.
•El contexto remite un requerimiento desde los clientes a la estrategia. Los clientes usualmente crean y pasan un objeto ConcreteStrategy al contexto. Después de eso los clientes interactúan con el contexto exclusivamente.


8. Consecuencias:

•Al favorecer la composición sobre la herencia facilita soportar variedad de comportamientos y su implementación.
•Reuso.
•Incrementa el número de objetos.

No hay comentarios:

Publicar un comentario