Sobes.tech
Junior — Middle

Paaiškinkite Decorator šablono koncepciją ir kokią naudą ji teikia programinės įrangos sistemų dizaine.

sobes.tech AI

Atsakymas iš AI

Decorator šablonas leidžia dinamiškai pridėti naujas atsakomybes objektams, juos apvyniojant kitais dekoratoriaus objektais, kurie įgyvendina tą patį sąsają. Tai alternatyva paveldėjimui funkcionalumo plėtimui.

Privalumai:

  • Lankstumas: dekoratoriai gali būti derinami įvairiais būdais ir kiekiais.
  • Vengia klasės sprogstamojo augimo dėl paveldėjimo.
  • Leidžia pridėti elgseną vykdymo metu.

Pavyzdys 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

Čia MilkDecorator prideda pieno kainą prie bazinės kavos.