Sobes.tech
Junior — Middle

Wyjaśnij koncepcję wzorca Dekorator i jakie są jego zalety w projektowaniu systemów programistycznych.

sobes.tech AI

Odpowiedź od AI

Wzorzec Decorator pozwala na dynamiczne dodawanie nowych obowiązków obiektom, opakowując je w inne obiekty-dekoratory, które implementują ten sam interfejs. Jest to alternatywa dla dziedziczenia w celu rozszerzenia funkcjonalności.

Zalety:

  • Elastyczność: dekoratory można łączyć w różnej kolejności i ilości.
  • Unika eksplozji klas spowodowanej dziedziczeniem.
  • Pozwala na dodanie zachowania w czasie działania.

Przykład w 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

Tutaj MilkDecorator dodaje koszt mleka do podstawowej kawy.