Патерни проєктування · 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);- ✓Правильна відповідь: Стратегія: алгоритми винесено у взаємозамінні функції
- 2Одинак: усі знижки зберігаються в одному спільному глобальному об'єкті
- 3Шаблонний метод: базовий розрахунок перевизначається в нащадках
Пояснення
Кожна знижка - окрема стратегія, а нова додається без правки функції price (це ще й приклад OCP). У JS стратегія часто - просто об'єкт функцій замість ієрархії класів.