Junior — Middle
Kunt u het concept en de toepassing van het Decorator-patroon in objectgeoriënteerd programmeren uitleggen?
sobes.tech AI
Antwoord van AI
Het Decorator-patroon stelt je in staat om dynamisch nieuwe verantwoordelijkheden aan objecten toe te voegen door ze in andere decorator-objecten te wikkelen, zonder de broncode van de klasse te wijzigen. Dit is vooral handig wanneer je functionaliteit wilt uitbreiden zonder overerving.
Voorbeeld: er is een basisinterface Drank met de methode kosten(). Je kunt een klasse Koffie maken en vervolgens decorateurs MetMelk, MetSuiker, die de kosten toevoegen en het gedrag aanpassen.
interface Drank {
double kosten();
}
class Koffie implements Drank {
public double kosten() { return 5.0; }
}
class MelkDecorator implements Drank {
private Drank drank;
public MelkDecorator(Drank drank) { this.drank = drank; }
public double kosten() { return drank.kosten() + 1.0; }
}
// Gebruik
Drank koffie = new Koffie();
Drank koffieMetMelk = new MelkDecorator(koffie);
System.out.println(koffieMetMelk.kosten()); // 6.0
Op deze manier kun je functionaliteit flexibel combineren zonder veel subklassen te maken.