Patrón strategy

Lectura de ~2 minutos

El patrón Strategy define una familia de algoritmos encapsulados de modo que se pueden variar independientemente incluso del cliente que los ejecuta.

Aplicabilidad

  • Cuando hay muchas clases relacionadas y solo difieren en su comportamiento.
  • Cuando se necesitan variaciones de un algoritmo.
  • Cuando un algoritmo utiliza información que el cliente no debería conocer.
  • Cuando una clase defien muchos comportamientos y éstos aparecen en muchas instrucciones condicionales.

Escrtuctura

UMLStrategy

Se define una interfaz conún a todos los algoritmos mediante una clase abstracta. Las clases que implementen un algoritmo distinto deben hacerlo mediante dicha interfaz.

El cliente debe configurar un objeto de tipo Strategy, incluso puede tener varios métodos de acceso a datos necesarios.

Consecuencias

  • Se pueden crear jerarquías de algoritmos ayudándonos de la herencia.
  • Se separa el contexto del algoritmo, permitiendo un cambio dinámico del algoritmo.
  • Elimina las condiciones para decidir que algoritmo usar.
  • Un cliente puede elegir que comportamiento se debe usar sin dificultad.
  • El cliente debe entender las diferencias entre los distintos algoritmos.
  • En ocasiones hay sobreinformación pasada al algoritmo que éste necesita.
  • Incrementa drásticamente el número de objetos en el sistema.

Puedes encontrar un sencillo ejemplo en .net core aquí.

Nos vemos en las próximas líneas.

Escrito el 11/09/2017