Permite mantener un conjunto de algoritmos de los que el objeto cliente puede elegir aquel que le conviene e intercambiarlo según sus necesidades.
Nombre:
Strategy.
También conocido como:
Policy.
Propósito:
Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables. Strategy permite al algoritmo variar independientemente de los clientes que lo utilicen.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· Se tiene una variedad de maneras de realizar una acción.
· Se puede no saber qué enfoque es apropiado paraa utilizar hasta el tiempo de ejecución.
· Se quiere añadir fácilidad a las posibles formas de realizar una acción.
· Se desea conservar el código mantenible a medida que se añaden comportamientos.
Estructura:

Participantes:
· Strategy: Declara una interfaz común a todos los algoritmos soportados.
· ConcreteStrategy: Implementa el algoritmo que usa la interfaz Strategy.
· Context: Se configuran con un objeto ConcreteStrategy. Mantiene una referencia a un objeto Strategy. Puede definir una interfaz que permite acceder a sus datos.
Consecuencias:
· Se define una familia de algoritmos similares mediante la cual es posible elegir una implementación (variante) particular.
· La lógica condicional es eliminada del Contexto.
· Los clientes quedan acoplados con las estrategias concretas por lo que es recomendable utilizar este patrón solamente cuando las variantes sean relevantes para los clientes.
· Diferentes alternativas para que las estrategias tengan disponibles los datos que necesitan para funcionar.
· Las estrategias aumentan la cantidad de objetos de la aplicación
Patrones relacionados:
· Singleton.
· Flyweight.
· Factory Method.
Etiquetas: Behavioral Patterns, Patrones de Comportamiento, Strategy