17 lines
1.3 KiB
Markdown
17 lines
1.3 KiB
Markdown
# Стратегия
|
||
|
||
Инкапсуляция алгоритма в объект — это назначение паттерна **стратегия**.
|
||
|
||
Поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и
|
||
помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.
|
||
|
||
## Код
|
||
|
||
Каждая утка СОДЕРЖИТ экземпляры `FlyBehavior` и `QuackBehavior`, которым делегируются выполнение соответствующих операций. Подобные связи между двумя классами означают, что используется механизм композиции. Поведение не наследуется, а предоставляется правильно выбранным объектом.
|
||
|
||
## Принципы
|
||
|
||
- Инкапсулировать то, что изменяется
|
||
- Отдавать предпочтение композиции перед наследованием
|
||
- Программировать на уровне интерфейсов, а не реализации
|