Decorator Pattern
Le pattern décorateur ajoute des responsabilités à un objet dynamiquement sans modifier sa classe, en empilant le comportement via une chaîne de wrappers comme alternative à l'extension par héritage.
Objectif
Empiler des fonctionnalités dynamiquement à l'exécution, en étendant les objets avec plus de flexibilité que l'héritage.
Mécanisme
Un décorateur implémente la même interface que la cible, détient une référence vers elle et ajoute du comportement avant/après la délégation des appels. Plusieurs décorateurs forment une chaîne d'emballage. La famille InputStream de Java et le @decorator de Python sont des exemples typiques.
Cas d’usage
- Empilement de fonctionnalités
- Décoration de flux d'E/S
- Préoccupations transversales