Andriy Shyrokoryadov

.Net developer, data scientist

Стратегия. Шаблоны проектирования - видео №3. №39.

Текст к видео "#39 Стратегия" на канале YouTube

В данном видео мы познакомимся с шаблоном проектирования «Стратегия». Названия шаблонов проектирования довольно лаконичные с одной стороны – они состоят из одного-двух слов, а с другой стороны они очень емкие – эта короткая фраза довольно глубоко описывает суть шаблона. Здесь шаблон проектирования «Стратегия» не является исключением. Само понятие стратегии представляет собой общий план достижения определенной цели. Как правило способов реализации стратегии может быть некоторое количество. Выбор способа реализации стратегии зависит от определенных факторов.

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

Из вышесказанного можно сделать вывод – шаблон проектирования «Стратегия» стоит использовать тогда, когда у нас есть несколько способов реализации одной и той же задачи. Выбор способ реализации может быть обусловлен логикой приложения, например в зависимости от текущей конфигурации приложения или текущего состояния приложения.

В шаблоне проектирования «Стратегия» необходимо выделить несколько элементов:

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

Пример кода из видео на GitHub

Для открытия файла проекта необходимо Visual Studio 2019.