Junior — Middle
Können Sie das Konzept und die Anwendung des Decorator-Musters in der objektorientierten Programmierung erklären?
sobes.tech KI
Antwort von AI
Das Decorator-Muster ermöglicht es, Objekten dynamisch neue Verantwortlichkeiten hinzuzufügen, indem sie in andere Decorator-Objekte eingewickelt werden, ohne den Quellcode der Klasse zu ändern. Dies ist besonders nützlich, wenn die Funktionalität ohne Vererbung erweitert werden soll.
Beispiel: Es gibt eine Basisschnittstelle Getränk mit der Methode kosten(). Man kann eine Klasse Kaffee erstellen und dann Dekorateure MitMilch, MitZucker, die die Kosten erhöhen und das Verhalten ändern.
interface Getränk {
double kosten();
}
class Kaffee implements Getränk {
public double kosten() { return 5.0; }
}
class MilchDekorator implements Getränk {
private Getränk getränk;
public MilchDekorator(Getränk getränk) { this.getränk = getränk; }
public double kosten() { return getränk.kosten() + 1.0; }
}
// Verwendung
Getränk kaffee = new Kaffee();
Getränk kaffeeMitMilch = new MilchDekorator(kaffee);
System.out.println(kaffeeMitMilch.kosten()); // 6.0
Auf diese Weise kann die Funktionalität flexibel kombiniert werden, ohne viele Unterklassen zu erstellen.