Sobes.tech
Junior — Middle

განმარტეთ Decorator-ის ნიმუშის კონცეფცია და რა სარგებელი აქვს მას პროგრამული სისტემების დიზაინში.

sobes.tech AI

პასუხი AI-სგან

Decorator მოდელი საშუალებას აძლევს დინამიურად დაამატოთ ახალი პასუხისმგებლობები ობიექტებს, რომლებითაც ისინი იფარება სხვა დეკორატორ ობიექტებით, რომლებიც იმავე ინტერფეისს ახორციელებენ. ეს ალტერნატივაა მემკვიდრეობისთვის ფუნქციონალობის გასაზრდელად.

უპირატესობები:

  • მოქნილობა: დეკორატორებს შეუძლიათ სხვადასხვა წესრიგში და რაოდენობით კომბინირება.
  • თავიდან აცილება კლასების აფეთქების მემკვიდრეობით.
  • საშუალებას აძლევს დამატებითი ქცევის დამატებას შესრულების დროს.

მაგალითი 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

აქ, MilkDecorator დამატებს რძის ღირებულებას ძირითადი ყავას.