Sobes.tech
Back to questions
Junior — Middle
80

Можете объяснить, что представляет собой паттерн декоратор и какой его основной смысл?

Companies where asked
Bytime

Answer from AI

sobes.tech 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

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