Стратегия
Вопрос
Паттерн «стратегия» - что это и когда пригождается на фронте?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
семейство взаимозаменяемых алгоритмов за общим интерфейсом
выбор алгоритма происходит в рантайме
убирает ветвление по типу из вызывающего кода
фронт: правила валидации, форматтеры, способы сортировки
реализуется объектом-словарём функций, классы не нужны
родственник - реестр компонентов по типу ячейки
Что могут спросить следом
- Чем стратегия отличается от простого switch
- Как типизировать словарь стратегий в TypeScript
- Где стратегия избыточна
Разбор
Стратегия - набор взаимозаменяемых алгоритмов за одним интерфейсом, выбираемых в рантайме. Цель - вынести ветвление из вызывающего кода.
Во фронтенде он почти всегда выглядит как объект-словарь функций:
const VALIDATORS = {
email: (v) => /.+@.+/.test(v) || 'неверная почта',
phone: (v) => v.replace(/\D/g, '').length === 11 || 'нужно 11 цифр',
};
const check = VALIDATORS[field.type];
Так же делают форматтеры валют, компараторы сортировки, рендереры ячеек таблицы. Классы для этого не нужны - функция и есть стратегия.
Выгода: добавление нового типа не трогает существующий код (тот самый принцип O).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.