Sobes.tech
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.