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