Wzorce projektowe · Middle · Pytanie 1 z 75
Jaki wzorzec zastosowano w tym refaktoringu?
// before
function price(type, sum) {
if (type === "vip") return sum * 0.8;
if (type === "sale") return sum * 0.9;
return sum;
}
// after
const discounts = { vip: s => s * 0.8, sale: s => s * 0.9, regular: s => s };
const price = (type, sum) => discounts[type](sum);- ✓Poprawna odpowiedź: Strategy: algorytmy wyniesiono do wymiennych funkcji
- 2Singleton: wszystkie rabaty są w jednym wspólnym obiekcie globalnym
- 3Template Method: bazowe obliczenie jest nadpisywane w podklasach
Wyjaśnienie
Każdy rabat to osobna strategia, a nową dodaje się bez edytowania funkcji price (to także przykład OCP). W JS strategia to często po prostu obiekt funkcji zamiast hierarchii klas.