Стратегия (Strategy)¶
Strategy прячет несколько взаимозаменяемых алгоритмов за единым контрактом.
Опора на ООП¶
Strategy — один из самых прямых паттернов на полиморфизм и интерфейсы: контекст вызывает общий контракт стратегии и не знает, какой конкретный алгоритм сейчас подставлен.
Что показывает пример на 1С¶
DataProcessors.ContextумеетSetStrategy(Strategy_)и затем вSendMessage(Message)делегирует вызовы объекту стратегии.EmailStrategy,SMSStrategyиTelegramStrategyреализуют общий набор действий:SetRecipient()иSendMessage().- Это прямой и очень узнаваемый для 1С пример выбора канала без условий в клиентском коде.
Пример¶
Где полезен в 1С¶
- для выбора канала уведомлений;
- для разных алгоритмов расчета, экспорта или подбора данных;
- когда бизнес-сценарий стабилен, а способы его выполнения меняются.
Когда паттерн лишний¶
- если вариантов алгоритма мало и они почти не отличаются;
- если стратегии знают слишком много о контексте;
- если обычная функция с параметром читается проще.