Identifiant :
Mot de passe :

Patrons de conception

Décorateur

Diagramme de classes :

Diagramme de classes

Description :

Type :  St  (Structurel)
Intention : Attache dynamiquement des responsabilités supplémentaires à un objet. Les décorateurs fournissent une alternative souple à la dérivation, pour étendre les fonctionnalités.
Applicabilité : Utilisez le Décorateur :
- Pour ajouter dynamiquement des responsabilités à des objets individuels, ceci d'une façon transparente, c'est-à-dire, sans affecter les autres objets.
- Pour des responsabilités qui doivent pouvoir être retirées.
- Quand l'extension par dérivation est impraticable. Il peut arriver parfois que l'on ait un grand nombre d'extensions indépendantes possibles ; il en résulte une prolifération explosive de sous-classes pour permettre chaque combinaison. D'autres fois, la définition de classe pourra être cachée, ou encore inaccessible pour la dérivation.

Points forts :

  1. 1. Extensibilité
    1. 1.1 L'ajout ou la suppression d'un décorateur n'implique pas de modification de code
    2. 1.2 L'ajout ou la suppression d'un objet à décorer n'implique pas de modification de code
  2. 2. Découplage entre les objets décorateurs et les objets à décorer
    1. 2.1 Nombre minimal de classes Décorateur
    2. 2.2 Factorisation maximale entre les décorateurs et les objets à décorer
  3. 3. Gestion des décorateurs à l'exécution
    1. 3.1 Les objets à décorer n'ont aucune connaissance des décorateurs
    2. 3.2 Un décorateur peut être décoré par un autre décorateur

Participants au patron :

Patrons abîmés :

  1. 1. Développement sur <<Décorateur>>
  2. 2. Développement sur <<Décorateur>> sans uniformité de protocole
  3. 3. Mauvais découplage
  4. 4. Développement maximal sur <<Composant>>
  5. 5. Développement des décorations sur <<Composant>>
  6. 6. Mauvais découplage sans possibilité d'extension sur <<Composant>>
  7. 7. Développement sur <<Décorateur>>

Problèmes :

  1. 1. Décoration récursive d'objets
Les têtes de mule
Cédric BOUHOURS
Cédric BOUHOURS
Cédric BOUHOURS