Стратегия
Юрий ЛогиновПозволяет определить семейство схожих алгоритмов, с целью последующей инкапсуляции их в отдельных классах, закрытые интерфейсом. В процессе выполнения данные алгоритмы можно заменять "на лету".
Применять:
- Когда нужно использовать разные вариации алгоритма внутри одного объекта
- Если есть множество похожих классов, отличающихся лишь некоторым поведением. Тогда это поведение можно вынести в отдельный интерфейс, а классы свести к одному.
- Когда не нужно отображать детали реализации алгоритмов другим классам.
- Когда различные вариации алгоритмов реализованы в виде условных операторов.
Плюсы:
- Горячая замена алгоритмов "на лету".
- Изолирует алгоритмы от других классов.
- Уход от наследования.
- Реализует принцип O/C
Минусы:
- Усложняет программу за счет новых классов
- Клиент должен понимать разницу между разными вариантами алгоритмов.