Junior — Middle
Explicați conceptul pattern-ului Decorator și care este avantajul său în proiectarea sistemelor software.
sobes.tech AI
Răspuns de la AI
Modelul Decorator permite adăugarea dinamică a responsabilităților noi obiectelor, învelindu-le în alte obiecte decorator care implementează aceeași interfață. Este o alternativă la moștenire pentru extinderea funcționalității.
Avantaje:
- Flexibilitate: decoratorii pot fi combinați în diferite ordini și cantități.
- Evită creșterea explozivă a claselor prin moștenire.
- Permite adăugarea de comportament în timpul execuției.
Exemplu în JavaScript (Node.js):
class Coffee {
cost() { return 5; }
}
class MilkDecorator {
constructor(coffee) { this.coffee = coffee; }
cost() { return this.coffee.cost() + 2; }
}
const simpleCoffee = new Coffee();
const milkCoffee = new MilkDecorator(simpleCoffee);
console.log(milkCoffee.cost()); // 7
Aici, MilkDecorator adaugă costul laptelui la cafeaua de bază.