Junior — Middle
Czy możesz wyjaśnić, na czym polega wzorzec dekoratora i jakie jest jego główne znaczenie?
sobes.tech AI
Odpowiedź od AI
Wzorzec «Dekorator» pozwala na dynamiczne dodawanie nowych obowiązków obiektom, opakowując je w inne obiekty dekorujące, bez zmiany oryginalnej klasy.
Główny pomysł polega na stworzeniu opakowania wokół obiektu, które implementuje ten sam interfejs i może wykonywać dodatkową logikę przed lub po wywołaniu metod oryginalnego obiektu.
Jest to przydatne, gdy chcemy rozbudować funkcjonalność bez dziedziczenia i modyfikacji istniejącego kodu.
Przykład w pseudokodzie:
interface Coffee {
double cost();
}
class SimpleCoffee implements Coffee {
public double cost() { return 5; }
}
class MilkDecorator implements Coffee {
private Coffee coffee;
public MilkDecorator(Coffee coffee) { this.coffee = coffee; }
public double cost() { return coffee.cost() + 2; }
}
// Użycie:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7
W ten sposób dekorator pozwala elastycznie dodawać funkcjonalność obiektom w czasie wykonywania.