Apprenez le Design Pattern Décorateur en 5 Min

April 2, 2015

Illustration du Design Pattern Décorateur via star-wars

Vous voulez comprendre rapidement comment ajouter des fonctionnalités dynamiques à vos objets ? Ce guide vous explique tout en 5 minutes chrono !

Pour cela je vais vous présenter un design pattern fondamental en programmation orientée objet : le Décorateur.

Qu’est-ce que le Design Pattern Décorateur ?

Le pattern Décorateur (Decorator) permet d’ajouter dynamiquement de nouvelles fonctionnalités à un objet sans modifier son code d’origine. Il offre une alternative souple à l’héritage, évitant ainsi une complexité inutile (comme l’explosion des classes ou des diagrammes rigides).

En pratique, ce pattern est utile lorsque l’héritage rend le code trop lourd ou difficile à maintenir. Grâce au Décorateur, vous pouvez ajouter des comportements à l’exécution de manière flexible.

Dans certains cas, l’héritage alourdit inutilement la structure du code, rendant sa maintenance plus complexe :

On prefere donc ajouter les nouvelles fonctionnalité a l’exécution.


Mise en place du design pattern :

Introduction

Le concept est simple : un décorateur est une classe qui hérite de l’objet qu’elle décore et contient une instance de cet objet. Cela permet une décoration récursive.

Prenons un exemple concret. Imaginez un vaisseau spatial (comme dans l’image en haut de l’article). Le vaisseau de base est l’objet à décorer, et un propulseur supplémentaire agit comme un décorateur, lui ajoutant de nouvelles fonctionnalités (par exemple, augmenter sa vitesse).

Voici un schéma pour mieux visualiser :

Schema macro du design pattern decorateur

Et voici une version UML plus formelle pour clarifier :

Diagramme UML du Design Pattern Décorateur

On voit bien que notre décorateur hérite du composant a décorer, contient une instance sur un composant.

Implémentation

Voici un extrait de code qui illustre comment implémenter ce pattern :

Dans cet exemple :

Les deux dernières classes héritent de Ship, permettant ainsi un chaînage récursif des décorateurs.

Dans le fichier Warehouse, vous pouvez observer une utilisation concrète de ce design pattern.

Points forts

Le Décorateur repose sur l’héritage et la composition, ce qui en fait un pattern puissant pour construire des applications modulaires et évolutives. Cependant, l’instanciation fréquente d’objets peut nécessiter l’utilisation d’une Factory pour optimiser le processus.


Conclusion

En résumé :

Ce pattern est un excellent outil pour gérer des besoins évolutifs tout en maintenant un code propre et maintenable.

C’est tout pour ce design pattern ! J’espère que cet article vous a été utile.

Quels autres patterns aimeriez-vous voir abordés dans un prochain article ? Faites-le-moi savoir dans les commentaires!

FAQ (Foire Aux Questions)

Qu’est-ce qu’un Design Pattern en programmation ?

Un Design Pattern est une solution réutilisable à un problème courant rencontré dans le développement logiciel. Ces patrons de conception permettent d’améliorer la structure, la lisibilité et la maintenance du code.

Quand utiliser le Design Pattern Décorateur ?

Le pattern Décorateur est particulièrement utile lorsque :

Quelle est la différence entre héritage et composition ?

Quels sont les avantages du Design Pattern Décorateur ?

comments powered by Disqus