Junior — Middle
113
Оё метавонед механизмии фаъолияти намунаи Decorator ва чӣ гуна дар барномасозӣ истифода мешавад, шарҳ диҳед?
Ширкатҳо дар куҷо пурсиданд
Ҷавоб аз AI
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
Так можно гибко расширять функциональность объектов без изменения их кода.