Паттерн "Стратегия" (Strategy) — это поведенческий шаблон проектирования, который определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Паттерн позволяет выбирать алгоритм во время выполнения программы. Это достигается за счет определения интерфейса для всех поддерживаемых алгоритмов и реализации каждого из них отдельно. Клиентский код может использовать эти алгоритмы без знания о конкретных реализациях, что обеспечивает гибкость и расширяемость системы.
Применение в общем виде
Паттерн "Стратегия" используется в следующих случаях:
- Когда есть несколько способов выполнить операцию, но необходимо выбрать один на основе некоторого условия.
- Когда система должна быть независимой от способа выполнения операции.
- Когда нужно динамически изменять алгоритмы во время выполнения программы.
Пример
Рассмотрим работу паттерна на примере работы сбора новостей с различных информационных ресурсов, применяя к каждому из них свою стратегию.
Создадим интерфейс IReader.
Далее создадим класс ResourceReader
Создадим конкретные классы Reader -s представляющие из себя различные стратегии чтения из различных источников информации.
Рассмотрим применение
Результат