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
Таким образом, функциональность объекта расширяется без изменения его кода, что повышает гибкость и поддерживаемость.