Загрузка…
JavaScript · middle · сложность 5
Strategy — взаимозаменяемые реализации за одним контрактом. Вызывающий выбирает поведение без огромного if/switch. В JS стратегии — обычные функции или объекты; отдельные классы не обязательны.
if/switch
const strategies = { percent: (price, n) => price * (1 - n / 100), fixed: (price, n) => Math.max(0, price - n), }; function applyDiscount(price, type, value) { const fn = strategies[type]; if (!fn) throw new Error("unknown strategy"); return fn(price, value); }
Полезно для pricing, retry policies и других реальных extension points. Если веток мало и они стабильны — простой if честнее лишней косвенности.
if
Итог: Strategy = сменный алгоритм за общим API; не усложняй стабильные 2–3 ветки.