Идея паттерна Стратегия (Strategy)

Паттерн проектирования — это продуманный способ построения исходного кода программы для решения часто возникающих в повседневном программировании проблем проектирования. Иными словами, это уже придуманное решения, для типичной задачи. При этом паттерн не готовое решение, а просто алгоритм действий, который должен привести к желаемому результату. Давайте рассмотрим один из наиболее часто используемых поведенческих паттернов — Стратегия (Strategy).

Как я уже писал ранее, существует три вида паттернов проектирования:

  • Порождающие паттерны позволяют возможность выполнять инициализацию объектов наиболее удобным и оптимальным способом.
  • Структурные паттерны описывают взаимоотношения между различными классами или объектами, позволяя им совместно реализовывать поставленную задачу.
  • Поведенческие паттерны позволяют грамотно организовать связь между сущностями для оптимизации и упрощения их взаимодействия.

Стратегия (Strategy) — это поведенческий паттерн, который позволяет инкапсулировать группу взаимосвязанных алгоритмов, и при необходимости заменять их друг на друга, без привязки к конкретным пользователям. То есть, Стратегия позволяет скрыть часть логики, предоставив возможность ее изменения. 

Архитектура паттерна проектирования Стратегия

Стратегия

  • Strategy — интерфейс алгоритма
  • Context — клиент стратегии
  • ConcreteStrategyA, ConcreteStrategyB, ConcreteStrategyC — конкретные реализации стратегии

Логика работы паттерна Strategy

Рассмотрим основную логику работы паттерна Стратегия. На самом деле данное поведение настолько часто встречается в повседневном программировании, что мы даже не задумываемся о том, что используем данный паттерн проектирования. Когда мы выделяем интерфейс, мы уже пользуемся стратегией, когда используем наследование тоже. Основная идея заключается в том, что мы определяем интерфейс, а реализуем его отдельно.

Реализация шаблона Стратегия (Strategy) на языке C#

Давайте рассмотрим тривиальный пример реализации данного паттерна. Мы зададим стратегию вывода текста на консоль. А конкретные реализации будут выводить текст разным цветом. Для этого определим интерфейс IConsoleWriter

Теперь создадим три класса, которые будут реализовывать данный интерфейс

Ну и наконец создадим клиента, который будет работать со стратегией, обращаясь к ее конкретным реализациям.

Получаем следующий результат работы приложения

Исходный код приложения можно скачать из репозитория github https://github.com/shwanoff/Strategy

Также рекомендую изучить Паттерн Посредник (Mediator)

P.S. Присоединяйся в любой удобной для тебя социальной сети. Для меня очень важно оставаться с тобой на связи, ведь у меня есть еще много полезной информации о программировании для тебя, которой я хочу с тобой поделиться.

Вконтакте
Telegram
Facebook
Twitter
Одноклассники
Дзен
Google+

 
×
%d такие блоггеры, как: