Patrón de Comportamiento
Strategy.
Código del Ejemplo
Implementación
- Definición de la comunicación entre Contexto y Estrategia.
- Configurar el contexto con una estrategia (tipos genéricos).
- Comportamiento por defecto en el contexto sin estrategia
Integrantes:
- Márion Córdova
- Christian Orellana
- Francisco Roldán
Susana Gubernatis
Sección 227
n.n
Muchas Gracias
Estructura
Proposito
- Definir una familia de algoritmos, encapsularlos y hacerlos intercambiables.
- Permite que el algoritmo cambie sin que afecte a los clientes que lo usan.
- También conocido como policy (política).
Ejemplo
Motivacion
Consecuencias
Colaboración entre
Participantes
- La herencia ayuda a factorizar funcionalidad común de los algoritmos.
- Alternativa a la extensión de contextos de cada uno con una estrategia o algoritmo.
- Reducción de instrucciones condicionales.
- Diferentes opciones de implementación para un mismo algoritmo.
- Incremento del número de objetos.
Participantes
- Es necesario el intercambio de información entre Estrategia y Contexto para implementar el algoritmo elegido:
- Parámetros de los métodos de la estrategia
Los clientes del contexto normalmente configuran a éste con una estrategia concreta. A partir de ahí, sólo se interactúa con el contexto.
- Ej: existen muchos algoritmos para dividir un flujo de texto en líneas.
- Codificar los algoritmos en las clases que los necesitan no es deseable por lo siguiente:
- Los clientes se hacen más complejos
- Distintos algoritmos serán apropiados en distintos momentos.
- Es difícil añadir nuevos algoritmos y modificar los existentes.
- No hay reutilización.
- Solución:
- Definir clases que encapsulen los distintos algoritmos.
- ConcreteStrategy (Estrategia Concreta).
Aplicabilidad
- Usa el patrón Strategy cuando:
- Varias clases relacionadas sólo difieren en su comportamiento. Strategy permite configurar a una clase con uno de entre varios comportamientos.
- Se necesiten variantes del mismo algoritmo, que se implementan como una jerarquía de clases.
- Un algoritmo usa datos que los clientes no tienen por qué conocer (ej. estructuras de datos específicas del algoritmo).
- Una clase define muchos comportamientos que aparecen en sentencias condicionales → mover los relacionados a un strategy.