Структура работы Strategy

- Контекст хранит ссылку на объект конкретной стратегии, работая с ним через общий интерфейс стратегий.
- Стратегия определяет интерфейс, общий для всех вариаций алгоритма. Контекст использует этот интерфейс для вызова алгоритма.
Для контекста неважно, какая именно вариация алгоритма будет выбрана, так как все они имеют одинаковый интерфейс.
- Конкретные стратегии реализуют различные вариации алгоритма.
- Во время выполнения программы контекст получает вызовы от клиента и делегирует их объекту конкретной стратегии.
- Клиент должен создать объект конкретной стратегии и передать его в конструктор контекста. Кроме этого, клиент должен иметь возможность заменить стратегию на лету, используя сеттер. Благодаря этому контекст не будет знать о том, какая именно стратегия сейчас выбрана.
Псевдокод
В этом примере контекст использует стратегию для выполнения той или иной арифметической операции.

