У шаблонах дизайну Head First Design викладається стратегічна схема , використовуючи приклад Duck, коли різним підкласам Duck може бути призначена певна поведінка під час виконання. З мого розуміння, ціль стратегічної схеми полягає у зміні поведінки одного об'єкта під час виконання, але вони використовують спадкування Дака для зміни поведінки різних типів Качки.
Доречність?
Чи контекстне успадкування Дака не має відношення до структури стратегії чи змінюється тип Дак, а також змінюється їх поведінка є вагомим приводом для використання стратегії? Чи є ситуації, коли потрібно змінювати обидва, є вагомою причиною для використання стратегії? Чому вони включають це як приклад структури стратегії?
Простіший приклад
Чи можу я далі спростити цей приклад, просто маючи клас Дак (немає похідних класів)? Тоді при реалізації одного об’єкта качки йому можуть бути призначені різні форми поведінки, виходячи з певних обставин, які не залежать від його власного типу об'єкта. Наприклад: FlyBehavior змінюється залежно від погоди або зміни QuackBehavior залежно від часу доби або того, як голодна качка. Я усвідомлюю, що це вирішило б іншу проблему, ніж та, яку викладено в книзі, але те, що я шукаю, - це відповідний зразок стратегії, на який потрібно відмовитися.
Чи міг би мій приклад входити і до стратегії?
Редагувати:
Мені вдалося знайти 2 простіші приклади шаблону стратегій, які суворіше дотримуються лише стратегічних моделей без успадкування контексту: Hunter.java та solver.py .