Entwurfsmuster · Middle · Frage 1 von 75
Welches Muster wurde bei diesem Refactoring angewendet?
// 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);- 1Strategy: die Algorithmen wurden in austauschbare Funktionen verlagert
- 2Template Method: die Basisberechnung wird in Unterklassen überschrieben
- 3Singleton: alle Rabatte liegen in einem gemeinsamen globalen Objekt
Antwort zeigen
Richtige Antwort: Strategy: die Algorithmen wurden in austauschbare Funktionen verlagert
Erklärung
Jeder Rabatt ist eine eigene Strategy, und ein neuer kommt hinzu, ohne die Funktion price zu ändern (auch ein Beispiel für OCP). In JS ist eine Strategy oft einfach ein Objekt aus Funktionen statt einer Klassenhierarchie.