Шаблон Стратегии не препятствует изменению класса, если вы добавляете новое поведение (стратегия). Это просто предотвращает прикосновение к классу, если существующее поведение (стратегия) изменяется.
Пример с QuackBehaviour: предположим, мы думали, что утка будет звучать как "кряк", но после нескольких лет исследований мы поняли, что утки на самом деле звучат как "кваак". Нам повезло, мы реализовали QuackBehaviour и просто настроили реализацию интерфейса QuackBehaviour для обычных уток. Вот такая уловка с этим шаблоном.
Если позже мы решим добавить SwimBehaviour, потому что другая исследовательская группа поняла, что плавание - это обычное поведение утки, тогда мы должны прикоснуться к обычной утке и добавить это поведение (в класс Duck
). 1010 *
Надеюсь, это помогло!