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