🟣 Подробное описание паттерна
Стратегия (англ. Strategy) относится к поведенческим шаблонам проектирования. Цель этого паттерна - выделить схожие алгоритмы, решающие конкретную задачу. Реализация алгоритмов выносится в отдельные классы и предоставляется возможность выбирать алгоритмы во время выполнения программы.🙂Аналогия из жизни🙂
Вам нужно добраться до аэропорта. Можно доехать на автобусе, такси или велосипеде. Здесь вид транспорта является стратегией. Вы выбираете конкретную стратегию в зависимости от контекста — наличия денег или времени до отлёта.
🟪 Когда применять?
🔎 Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.
🔎 Когда у вас есть множество похожих классов, отличающихся только некоторым поведением.
🔎 Когда вы не хотите обнажать детали реализации алгоритмов для других классов.
🔎 Когда различные вариации алгоритмов реализованы в виде развесистого условного оператора. Каждая ветка такого оператора представляет собой вариацию алгоритма.
🗂 Код на Python




