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

Мындайча, декоратор объекттерге иштөө учурунда ийкемдүү функционалдуулук кошууга мүмкүндүк берет.