Назад к вопросам
БАРС групп
Junior — Middle
64
Объясните, что представляет собой паттерн 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 SimpleCoffee();
coffee = new MilkDecorator(coffee);
System.out.println(coffee.getDescription()); // Simple coffee, milk
System.out.println(coffee.getCost()); // 1.5
Таким образом, функциональность объекта расширяется без изменения его кода, что повышает гибкость и поддерживаемость.