Sobes.tech
Junior — Middle

Meg tudná magyarázni, hogy mi az a dekorátor minta, és mi a fő értelme?

sobes.tech MI

Válasz az MI-től

A «Decorator» minta lehetővé teszi, hogy dinamikusan adjunk hozzá új felelősségeket az objektumokhoz, azokat más dekorátor objektumokba csomagolva anélkül, hogy módosítanánk az eredeti osztályt.

A fő ötlet, hogy egy burkolatot hozzunk létre az objektum körül, amely ugyanazt a felületet valósítja meg, és további logikát hajthat végre az eredeti objektum metódusainak hívása előtt vagy után.

Ez akkor hasznos, amikor a funkcionalitást anélkül szeretnénk bővíteni, hogy öröklés vagy meglévő kód módosítása szükséges lenne.

Példa pseudokódban:

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; }
}

// Használat:
Coffee coffee = new MilkDecorator(new SimpleCoffee());
System.out.println(coffee.cost()); // 7

Így a dekorátor lehetővé teszi az objektumok funkcionalitásának rugalmas bővítését futási időben.