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.
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
Estructura

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
- Permite que los comportamientos de los objetos Cliente sean determinados dinámicamente sobre un objeto base.
- Simplifica los objetos Cliente para deducirlos de alguna responsabilidad para seleccionar comportamientos o implementaciones de comportamientos alternativos. Esto simplifica el código de los objetos Cliente eliminando las expresiones if y switch. En algunos casos, esto puede incrementar también la velocidad de los objetos Cliente porque ellos no necesitan perder tiempo seleccionado un comportamiento.
Patrones relacionados
Adapter: El patrón Adapter es estructuralmente similar al patrón Strategy. La diferencia esta en el objetivo. El patrón Adapter permite a un objeto Cliente sacar su función pretendida originalmente mediante llamadas a métodos de objetos que implementa un interface particular. El patrón Strategy proporciona objetos que implementa un interface particular con el propósito de alterar o determinar el comportamiento de un objeto Cliente.
Flyweight: Si hay muchos objetos Cliente, los objetos StrategyConcreto pueden estar
mejor implementados como Flyweights.
Template Method: El patrón Template Method maneja comportamientos alternativos a través de subclases más que a través de delegación.
Adapter: El patrón Adapter es estructuralmente similar al patrón Strategy. La diferencia esta en el objetivo. El patrón Adapter permite a un objeto Cliente sacar su función pretendida originalmente mediante llamadas a métodos de objetos que implementa un interface particular. El patrón Strategy proporciona objetos que implementa un interface particular con el propósito de alterar o determinar el comportamiento de un objeto Cliente.
Flyweight: Si hay muchos objetos Cliente, los objetos StrategyConcreto pueden estar
mejor implementados como Flyweights.
Template Method: El patrón Template Method maneja comportamientos alternativos a través de subclases más que a través de delegación.
No hay comentarios:
Publicar un comentario