Sobes.tech
Назад к вопросам
Junior — Middle
78

Можете объяснить механизм функционирования паттерна Decorator и как он применяется в программировании?

Компании, где спрашивали
БАРС группБАРС групп

Ответ от нейросети

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 MilkDecorator(new SimpleCoffee());
System.out.println(coffee.getDescription()); // Simple coffee, milk
System.out.println(coffee.getCost()); // 1.5

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