Junior — Middle
Pouvez-vous expliquer le concept et l'application du motif Décorateur en programmation orientée objet?
sobes.tech IA
Réponse de l'IA
Le motif Décorateur permet d’ajouter dynamiquement de nouvelles responsabilités aux objets, en les enveloppant dans d’autres objets décorateurs, sans modifier le code source de la classe. Cela est particulièrement utile lorsque vous souhaitez étendre la fonctionnalité sans héritage.
Exemple : il existe une interface de base Boisson avec la méthode coût(). Vous pouvez créer une classe Café, puis des décorateurs AvecLait, AvecSucre, qui ajoutent au coût et modifient le comportement.
interface Boisson {
double coût();
}
class Cafe implements Boisson {
public double coût() { return 5.0; }
}
class DecorateurLait implements Boisson {
private Boisson boisson;
public DecorateurLait(Boisson boisson) { this.boisson = boisson; }
public double coût() { return boisson.coût() + 1.0; }
}
// Utilisation
Boisson cafe = new Cafe();
Boisson cafeAvecLait = new DecorateurLait(cafe);
System.out.println(cafeAvecLait.coût()); // 6.0
Ainsi, il est possible de combiner la fonctionnalité de manière flexible sans créer de nombreuses sous-classes.