Motivación:
Permite mantener un conjunto de algoritmos de los que el cliente puede elegir aquel que le convenga e intercambiarlo según sus necesidades; de manera que se puese evitar problemas mediante la definición de las diferentes clases que encapsulan lineas de algoritmos. Un algoritmo que es encapsulado en este camino se llama una Strategy.
Estructura:
Participantes:
- Strategy:
Define el comportamiento de la interfaz que es común a todas las implementaciones concretas. El contexto invoca una aplicación específica a través de la interfaz Strategy.
- ConcreteStrategy:
Encapsula una aplicación de un algoritmo específico o comportamiento que se define la estrategia a través de la interfaz.
- Context:
Proporciona ciertos servicios que se define a través de la interfaz y la estrategia aplicada por ConcreteStrategy diferentes clases dependiendo de la conducta. El contexto de clase contiene una referencia a través de la interfaz Strategy a un objeto de ConcreteStrategy.
- Client:
hace uso de la clase de contexto para invocar los diferentes servicios. Dependiendo de la asociación entre el contexto y clases ConcreteStrategy, las distintas implementaciones serán invocadas.
Referencias:
- http://www.javadesign.info/DesignConcepts/DesignPatterns/GOF/strategy_pattern
- DesIgn Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson, Vlissides Editorial Addison-Wesley.
No hay comentarios:
Publicar un comentario