En Head First Design Patterns , enseña el patrón de estrategia mediante el uso de un ejemplo de Duck en el que a diferentes subclases de Duck se les puede asignar un comportamiento particular en tiempo de ejecución. Según tengo entendido, el propósito del patrón de estrategia es cambiar el comportamiento de un solo objeto en tiempo de ejecución, pero están utilizando la herencia de Duck para cambiar el comportamiento de varios tipos de Duck.
¿Relevancia?
¿La herencia de contexto de Duck es irrelevante para el patrón de estrategia o la variación de los tipos de Duck y la variación de sus comportamientos son una buena razón para emplear el patrón de estrategia? ¿Las situaciones en las que necesita variar constituyen una buena razón para usar el patrón de estrategia? ¿Por qué incluirían esto como ejemplo de patrón de estrategia?
Un ejemplo mas simple
¿Podría simplificar aún más este ejemplo simplemente teniendo una clase Duck (sin clases derivadas)? Luego, al implementar un objeto de pato, se le pueden asignar diferentes comportamientos en función de ciertas circunstancias que no dependen de su propio tipo de objeto. Por ejemplo: FlyBehavior cambia según el clima o QuackBehavior cambia según la hora del día o qué tan hambriento está un pato. Me doy cuenta de que esto resolvería un problema diferente al que está en el libro, pero lo que estoy buscando es un ejemplo de patrón de estrategia relevante al que recurrir.
¿Mi ejemplo anterior constituiría también el patrón estratégico?
Editar:
Tuve éxito en encontrar 2 ejemplos de patrones de estrategia más simples que se adhieren más estrictamente a ser solo patrones de estrategia sin herencia de contexto: Hunter.java y solver.py .
fuente