2009-11-16 15 views

Respuesta

7

Porque algunos de los componentes implementan estrategias, "formas de lograr algo".

El objetivo del patrón de estrategia es permitirle elegir una forma de hacer algo, una "estrategia", en tiempo de ejecución.

El nombre no se refiere al patrón como un todo, se refiere a los objetos dentro del patrón que realizan acciones.

+1

Suena más como un "táctica" en este punto, ¿no? ¿No implicaría una "estrategia" un paradigma tipo "plan maestro" más grande? – jldupont

+0

@jldupont: ¡No me culpes, no lo llamé! :-) – RichieHindle

+0

Sí, pero muchos de ellos lo hacen, fábrica, por ejemplo ... – Peter

7

La idea detrás del patrón de estrategia es que "los algoritmos se pueden seleccionar en tiempo de ejecución". (Wikipedia, Strategy Pattern) El patrón, en esencia, es seleccionar la estrategia (o el comportamiento) correcta para resolver un problema en particular en el tiempo de ejecución. Por lo tanto, es su nombre.

+0

Se siente como una definición más apropiada que la proporcionada por @RichieHindle. – jldupont

4

Es cierto que todos los patrones son "estrategias" para el diseño de aplicaciones. Sin embargo, el patrón de Estrategia requiere una lógica, algoritmos, etc. complicados y lo encapsula. Lo cual limpia su código y también permite que se usen diferentes estrategias basadas en diferentes condiciones.

Ej. Escribí un complicado cálculo de intereses para Colateral y en lugar de tener el cálculo dentro de la clase Colateral lo moví a una clase InterestCalcuation (estrategia). Luego, cuando empezaron a decirme que el cálculo tenía que ser diferente, porque InterestCalculation se adhirió a la interfaz IInterestCalculation, pude cambiar y crear nuevos cálculos tanto como lo necesitaba y la clase Colateral no se vio afectada ...

Cuestiones relacionadas