Aller au contenu
uencoder

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

Termes associés

References