W Head First Design Patterns uczy wzorca strategii na przykładzie kaczki, w którym różnym podklasom kaczki można przypisać określone zachowanie w czasie wykonywania. Z mojego rozumienia celem wzorca strategii jest zmiana zachowania pojedynczego obiektu w czasie wykonywania, jednak używają one dziedziczenia Kaczki, aby zmienić zachowanie różnych typów Kaczek.
Stosowność?
Czy dziedziczenie kontekstu Kaczki nie ma znaczenia dla wzorca strategii, czy też różne typy Kaczek, a także ich zachowania są dobrym powodem do zastosowania wzorca strategii? Czy sytuacje, w których musisz się różnić, stanowią dobry powód do zastosowania wzorca strategii? Dlaczego mieliby to uwzględniać jako przykład wzorca strategii?
Prostszy przykład
Czy mogę jeszcze bardziej uprościć ten przykład, mając po prostu klasę Duck (bez klas pochodnych)? Następnie podczas implementacji jednego obiektu kaczki można mu przypisać różne zachowania w zależności od pewnych okoliczności, które nie są zależne od jego własnego typu obiektu. Na przykład: FlyBehavior zmienia się w zależności od pogody lub QuackBehavior zmienia się w zależności od pory dnia lub tego, jak głodna jest kaczka. Zdaję sobie sprawę, że rozwiązałoby to inny problem niż ten opisany w książce, ale szukam odpowiedniego wzorca strategii, na którym można się oprzeć.
Czy mój powyższy przykład również stanowiłby wzór strategii?
Edytować:
Udało mi się znaleźć 2 prostsze przykłady wzorców strategii, które ściślej stosują się do bycia wzorcami strategii bez dziedziczenia kontekstu: Hunter.java i solver.py .