POURQUOI CE BLOG, POUR QUI ?


POURQUOI CE BLOG, POUR QUI ?
Ce Blog s'adresse à tous ceux qui sont passionnés par les sciences informatiques , Professionnels,Etudiants,Amateurs ...
Les sujets exposés dans la suite se rapporteront essentiellement sur l'analyse informatique,la programmation,le développement ainsi que à l'architecture IT.
QUI SUIS JE ?
Je suis Kangulungu Lubilanji, Consultant-Freelance sur les technologies .NET,C#,ASP.NET ... Contactez moi pour plus d'informations.

Design pattern : 13.Le Pattern Decorator

13.Le Pattern Decorator
Description:
Le but du pattern Decorator est d'ajouter dynamiquement des fonctions supplémentaires à un objet. Cet ajout de fonctionnalités ne modifie pas l'interface de l'objet et reste transparent vis-à-vis des clients.

Le pattern Decorator constitue une alternative par rapport à la création d'une sous-classe pour enrichir un objet. 
Exemple:
Dans un système qui offre des fonctions par catégories de produits, à un client,si nous voulons offrir des fonctionnalités supplémentaires pour une catégorie de produits nous pouvons rajouter une sous-classe spécifique, si on veut rajouter d'autres fonctionnalités une autre catégorie de produit idem nous pourrions rajouter une sur-classe ce qui devient vite complexe. Il est aisé de comprendre que l'utilisation de l'héritage n'est pas adapté à ce qui  est demandé pour deux raisons : 
- L'héritage est un outil trop puissant pour réaliser un tel ajout de fonctionnalité.
- L'héritage est un mécanisme statique.

Le pattern Decorator propose une autre approche qui consiste à ajouter un nouvel objet appelé décorateur qui se substitue à l'objet initial et qui le référence. Ce décorateur possède la même interface ce qui rend la substitution transparente vis-à-vis des clients.
But:
Le but du pattern Decorator est d'ajouter dynamiquement des fonctions supplémentaires à un objet. Cet ajout de fonctionnalités ne modifie pas l'interface de l'objet et reste transparent vis-à-vis des clients.
Solution:
 Le pattern Decorator propose une autre approche qui consiste à ajouter un nouvel objet appelé décorateur qui se substitue à l'objet initial et qui le référence.
Avantages:
On évite d'utiliser des mécanismes statiques.
On garde des objets basiques très simple.
Diagramme de classes:
Structure générique du pattern Decorator

Diagramme des séquences représentant une seule  fonctionnalité rajouté

Diagramme des séquences représentant deux  fonctionnalités rajoutées

Participants:
ComposantAbstrait est l'interface commune au composant et aux décorateur;
ComposantConcret est l'objet intial auquel de nouvelles fonctionnalités doivent être ajoutées;
Decorateur est une classe abstaite qui détient une référence vers un composant;
DecorateurConcretA et DecorateurConcretB sont des sous-classes concrètes de Decorateur qui ont pour but l'implantation des fonctionnalités ajoutées au composant.
Collaborations:
Le décorateur se substitue au composant. Lorsqu'il reçoit un message destiné à ce dernier, il le redirige au composant en effectuant des opérations préalables ou postérieures à cette redirection.
Domaines d'utilisation:
- Un système ajoute dynamiquement des fonctionnalités à un objet, sans modifier son interface, c'est à dire sans que les clients de cet objet doivent être modifiés.
- Un système gère des fonctionnalités qui peuvent être retirées dynamiquement.
- L'utilisation de l'héritage pour étendre des objets n'est pas pratique, ce qui peut arriver quand leur hiérarchie est déjà complexe.

Aucun commentaire: