Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ է դեկորատոր մոդելը և դրա հիմնական իմաստը ինչ է?

sobes.tech AI

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

«Դեկորատոր» մոդելը թույլ է տալիս դինամիկ ավելացնել նոր պատասխանատվություններ օբյեկտներին՝ դրանք պատելով այլ դեկորատոր օբյեկտներով՝ առանց փոփոխելու սկզբնական դասը:

Հիմնական գաղափարը՝ ստեղծել օբյեկտի շուրջ պատյան, որը նույն ինտերֆեյսը կիրառում է և կարող է կատարել լրացուցիչ տրամաբանություն՝ նախքան կամ հետո՝ սկզբնական օբյեկտի մեթոդները կանչելիս:

Այս մոտեցումը օգտակար է, երբ անհրաժեշտ է ընդլայնել գործառույթը՝ ժառանգության և առկա կոդի փոփոխության առանց:

Օրինակ՝ псևդոկոդում:

interface Coffee {
    double cost();
}

class SimpleCoffee implements Coffee {
    public double cost() { return 5; }
}

class MilkDecorator implements Coffee {
    private Coffee coffee;
    public MilkDecorator(Coffee coffee) { this.coffee = coffee; }
    public double cost() { return coffee.cost() + 2; }
}

// Օգտագործում՝
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

Այս կերպ, դեկորատորը թույլ է տալիս ճկուն կերպով ավելացնել ֆունկցիոնալություն օբյեկտներին՝ գործարկման ժամանակ։