Паттерн проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых поведенческих паттернов — Стратегия (Strategy).
Как я уже писал ранее, существует три вида паттернов проектирования:
- Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
- Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
- Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.
Стратегия (Strategy) — это поведенческий паттерн, который позволяет инкапсулировать группу взаимосвязанных алгоритмов, и при необходимости заменять их друг на друга, без привязки к конкретным пользователям. То есть, Стратегия позволяет скрыть часть логики, предоставив возможность ее изменения.
Давайте рассмотрим диаграмму паттерна Стратегия
- Strategy — интерфейс алгоритма
- Context — клиент стратегии
- ConcreteStrategyA, ConcreteStrategyB, ConcreteStrategyC — конкретные реализации стратегии
Рассмотрим основную логику работы паттерна Стратегия. На самом деле данное поведение настолько часто встречается в повседневном программировании, что мы даже не задумываемся о том, что используем данный паттерн проектирования. Когда мы выделяем интерфейс, мы уже пользуемся стратегией, когда используем наследование тоже. Основная идея заключается в том, что мы определяем интерфейс, а реализуем его отдельно.
Продолжение, с деталями реализации на языке C# доступно по ссылке https://shwanoff.ru/strategy/