Junior — Middle
Tudja magyarázni az Dekorátor mintázat fogalmát és alkalmazását az objektumorientált programozásban?
sobes.tech MI
Válasz az MI-től
A Decorátor minta lehetővé teszi, hogy dinamikusan adjunk hozzá új felelősségeket az objektumokhoz, más dekorátor objektumokba csomagolva őket, anélkül, hogy módosítanánk az osztály forráskódját. Ez különösen hasznos, amikor a funkcionalitást öröklés nélkül szeretnénk bővíteni.
Példa: van egy alap Ital interfész a költség() metódussal. Létrehozhatunk egy Kávé osztályt, majd dekorátorokat Tejjel, Cukorral, amelyek növelik a költséget és megváltoztatják a viselkedést.
interface Ital {
double költség();
}
class Kávé implements Ital {
public double költség() { return 5.0; }
}
class TejDekorátor implements Ital {
private Ital ital;
public TejDekorátor(Ital ital) { this.ital = ital; }
public double költség() { return ital.költség() + 1.0; }
}
// Használat
Ital kávé = new Kávé();
Ital kávéTejjel = new TejDekorátor(kávé);
System.out.println(kávéTejjel.költség()); // 6.0
Így rugalmasan lehet kombinálni a funkcionalitást anélkül, hogy sok alosztályt kellene létrehozni.