Sobes.tech
Junior — Middle
86

Decorator паттерні дегеніміз не және ол объектінің функционалдығын кеңейту үшін қалай пайдаланылады?

Сұралған компаниялар
БАРС группБАРС групп

AI-дан жауап

sobes.tech AI

Паттерн Decorator позволяет динамически добавлять объектам новую функциональность, оборачивая их в другие объекты-декораторы, которые реализуют тот же интерфейс. Это альтернатива наследованию, когда расширение возможностей происходит без изменения исходного класса.

Пример использования в Java:

interface Coffee {
    String getDescription();
    double getCost();
}

class SimpleCoffee implements Coffee {
    public String getDescription() {
        return "Simple coffee";
    }
    public double getCost() {
        return 1.0;
    }
}

class MilkDecorator implements Coffee {
    private Coffee coffee;
    public MilkDecorator(Coffee coffee) {
        this.coffee = coffee;
    }
    public String getDescription() {
        return coffee.getDescription() + ", milk";
    }
    public double getCost() {
        return coffee.getCost() + 0.5;
    }
}

// Использование:
Coffee coffee = new SimpleCoffee();
coffee = new MilkDecorator(coffee);
System.out.println(coffee.getDescription()); // Simple coffee, milk
System.out.println(coffee.getCost()); // 1.5

Таким образом, функциональность объекта расширяется без изменения его кода, что повышает гибкость и поддерживаемость.