Патерни проєктування · Middle · Запитання 1 з 75

Який патерн застосовано під час рефакторингу?

// було
function price(type, sum) {
  if (type === "vip") return sum * 0.8;
  if (type === "sale") return sum * 0.9;
  return sum;
}
// стало
const discounts = { vip: s => s * 0.8, sale: s => s * 0.9, regular: s => s };
const price = (type, sum) => discounts[type](sum);

Пояснення

Кожна знижка - окрема стратегія, а нова додається без правки функції price (це ще й приклад OCP). У JS стратегія часто - просто об'єкт функцій замість ієрархії класів.

Де почитати

Помилка в запитанні

Патерни проєктування · Middle · запитання 1

Перевірте себе

Пройдіть тест Патерни проєктування · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест