Sobes.tech
Junior — Middle

Ներկայացրեք Decorator դիզայնի ձևաչափի գաղափարը և դրա առավելությունը ծրագրային համակարգերի նախագծման մեջ։

sobes.tech AI

Պատասխան AI-ից

Decorator մոդելը թույլ է տալիս դինամիկ ավելացնել նոր պատասխանատվություններ օբյեկտներին՝ դրանք պատելով այլ decorator օբյեկտներով, որոնք իրականացնում են նույն ինտերֆեյսը։ Սա փոխարինում է ժառանգությանը՝ գործառնականությունը ընդլայնելու համար։

Առավելություններ՝

  • Լկտություն՝ 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-ը ավելացնում է կաթի արժեքը հիմնական սուրճին։