This repository has been archived on 2022-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
patterns/strategy/README.md

20 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2022-11-09 21:22:13 +00:00
# Стратегия
2022-11-11 09:54:25 +00:00
Поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.
2022-11-09 21:22:13 +00:00
2022-11-17 07:16:54 +00:00
Инкапсуляция алгоритма в объект — это назначение паттерна **Стратегия**. Использует композицию. Определяет семейство алгоритмов и обеспечивает их взаимозаменяемость. Инкапсуляция позволяет легко использовать разные алгоритмы на стороне клиента.
2022-11-09 21:22:13 +00:00
## Код
Каждая утка СОДЕРЖИТ экземпляры `FlyBehavior` и `Quack­Behavior`, которым делегируются выполнение соответствующих операций. Подобные связи между двумя классами означают, что используется механизм композиции. Поведение не наследуется, а предоставляется правильно выбранным объектом.
## Принципы
- Инкапсулировать то, что изменяется
- Отдавать предпочтение композиции перед наследованием
- Программировать на уровне интерфейсов, а не реализации
2022-11-14 12:13:48 +00:00
## Схемы
![scheme-1](scheme-1.png)