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 დამატებს რძის ღირებულებას ძირითადი ყავას.