Sobes.tech
Junior — Middle

Тартиби Decorator чӣ гуна аст ва чӣ гуна барои васеъ кардани функсионалӣ кардани объектҳо истифода мешавад, шарҳ диҳед

sobes.tech AI

Ҷавоб аз 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

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