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.