Вместо того, чтобы изначальный класс сам stoch rsi выполнял тот или иной алгоритм, он будет играть роль контекста, ссылаясь на одну из стратегий и делегируя ей выполнение работы. Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию. Стратегия помещает каждую лапу такого оператора в отдельный класс-стратегию.
В нашем примере каждый алгоритм поиска пути переедет в свой собственный класс. В этих классах будет определён лишь один метод, принимающий в параметрах координаты начала и конца заработок на букмекерских вилках пути, а возвращающий массив точек маршрута. Паттерн Стратегия предлагает определить семейство схожих алгоритмов, которые часто изменяются или расширяются, и вынести их в собственные классы, называемые стратегиями. Стратегия позволяет вынести отличающееся поведение в отдельную иерархию классов, а затем свести первоначальные классы к одному, сделав поведение этого класса настраиваемым. Когда у вас есть множество похожих классов, отличающихся только некоторым поведением.
- Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию.
- Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий.
- Стратегия позволяет вынести отличающееся поведение в отдельную иерархию классов, а затем свести первоначальные классы к одному, сделав поведение этого класса настраиваемым.
- Одной из самых востребованных функций являлся поиск и прокладывание маршрутов.
Навигатору достаточно подать в стратегию данные о начале и конце маршрута, чтобы получить массив точек маршрута в оговорённом формате. Любое изменение алгоритмов поиска, будь то исправление багов или добавление нового алгоритма, затрагивало основной В чем разница между инвестором и трейдером СберБанк класс. Это повышало риск сделать ошибку, случайно задев остальной работающий код.
Если с популярностью навигатора не было никаких проблем, то техническая часть вызывала вопросы и периодическую головную боль. С каждым новым алгоритмом код основного класса навигатора увеличивался вдвое. В таком большом классе стало довольно трудно ориентироваться. Первая версия вашего навигатора могла прокладывать маршрут лишь по дорогам, поэтому отлично подходила для путешествий на автомобиле. Поэтому следующим шагом вы добавили в навигатор прокладывание пеших маршрутов. Когда вы не хотите обнажать детали реализации алгоритмов для других классов.
В ближайшей перспективе вы хотели бы добавить прокладывание маршрутов по велодорожкам. А в отдалённом будущем — интересные маршруты посещения достопримечательностей.
Вы выбираете конкретную стратегию в зависимости от контекста — наличия денег или времени до отлёта. Одной из самых востребованных функций являлся поиск и прокладывание маршрутов. Пребывая в неизвестном ему городе, пользователь должен иметь возможность указать начальную точку и пункт назначения, а навигатор — проложит оптимальный путь. Когда вам нужно использовать разные вариации какого-то алгоритма внутри одного объекта.
Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий. С другой стороны, вы сможете изменять и добавлять новые виды алгоритмов, не трогая код контекста. Стратегия позволяет изолировать код, данные и зависимости алгоритмов от других объектов, скрыв эти детали внутри классов-стратегий.
Затем контекст получает определённый объект-стратегию от клиента и делегирует ему работу. Если вдруг понадобится сменить алгоритм, в контекст можно подать другую стратегию. Когда различные вариации алгоритмов реализованы в виде развесистого условного оператора. Каждая ветка такого оператора представляет собой вариацию алгоритма. Хотя каждый класс будет прокладывать маршрут по-своему, для навигатора это не будет иметь никакого значения, так как его работа заключается только в отрисовке маршрута.




Leave A Comment