Sobes.tech
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ă.