Patrón Strategy

Problema a resolver

Problema

Dada una clase C con un método m, donde m presenta una alta variabilidad no acotada en un punto concreto de su implementación, cómo conseguir que la clase C pueda recibir nuevos cambios sin necesidad de modificarla.

Solución

Ejemplo Concreto

Solución Abstracta

Ventajas e Incovenientes

Receta para aplicar el patrón

  1. Identificar el bloque de código del método m de la clase C donde se presenta la àlta variabilidad.
  2. Identificar las entradas y salidas de dicho bloque de código.
  3. Diseñar un método x que abstraiga dicho bloque de código.
  4. Crear una clase abstracta Strategy que contenga dicho método x.
  5. Añadir una referencia de la clase C a la clase Strategy.
  6. Reemplazar el bloque de código del método m con alta variabilidad por una llamada al método x de la clase Strategy.
  7. Implementar tantas subclases de la clase Strategy como variantes existían en el bloque de código con alta variabilidad.

Detalles a considerar

  1. ¿Cuántos parámetros debe recibir el método que calcula la estrategia?
  2. ¿Quién y cómo configura las estrategias?