Паттерн "Стратегия" определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. Он позволяет модифицировать алгоритмы независимо от их использования на стороне клиента.
Каждая утка СОДЕРЖИТ экземпляры FlyBehavior и Quack Behavior, которым делегируются выполнение соответствующих операций. Подобные связи между двумя классами означают, что используется механизм композиции. Поведение не наследуется, а предоставляется правильно выбранным объектом.
*Принципы:*
- Инкапсулировать то, что изменяется
- Отдавать предпочтение композиции перед наследованием
- Программировать на уровне интерфейсов, а не реализации