Tutoriels sur l’informatique Comment bien créer un site Web ? Apprendre à maitriser Wordpress Augmentez votre visibilité (SEO) Nos services d'hébergement Web Decorator pattern : explication, représentation UML et exemple
HébergementWebs.com : L'actualités, guides et tutoriaux du moment
Nos services
SEO
Wordpress
Site Web
Tutoriels
Decorator pattern : explication, représentation UML et exemple

Decorator pattern : explication, représentation UML et exemple

Tutoriels
2021-02-21 00:02:44

Decorator pattern : explication, représentation UML et exemple

Decorator Pattern : le modèle pour les extensions de classe dynamiques

Vous souhaitez étendre une classe existante dans un logiciel orienté objet avec de nouvelles fonctionnalités, vous avez deux options différentes :la solution simple, mais aussi rapidement déroutante, qui consiste à mettre en place des sous-classes complétant la classe de base de manière appropriée ou bien, autre solution, vous pouvez également utiliser une instance de décorateur selon le patron Décorateur. Ce modèle, qui est l’un des 23 Design Patterns GoF, permet une extension dynamique des classes pendant que le logiciel fonctionne. Cela élimine le besoin de hiérarchies d’héritage infiniment longues et difficiles à comprendre.

Ci-dessous, vous apprendrez ce qu’est exactement le Decorator Pattern et quels sont ses avantages et ses inconvénients. En outre, nous illustrerons le fonctionnement du modèle au moyen d’une représentation graphique et d’un exemple concret.

Sommaire

  • Qu’est-ce que le Decorator Pattern (patron Décorateur) ?
  • À quoi sert le patron Décorateur ?
  • Decorator Pattern : diagramme UML pour illustration
  • Les avantages et les inconvénients du Decorator Pattern en un coup d’œil
  • Patron Décorateur : scénarios d’application typiques
  • Exemple pratique pour la mise en œuvre du Decorator Pattern
  • Qu’est-ce que le Decorator Pattern (patron Décorateur) ?

    Le patron Decorator ou Decorator Pattern en anglais, est un patron de stratégie publié en 1994 pour l’extension claire des classes dans les logiciels informatiques orientés objet. Selon le patron, tout objet peut être étendu par un comportement souhaité sans affecter le comportement des autres objets de la même classe. Structurellement, le patron Décorateur est très similaire au patron de conception « Chaîne de responsabilité » mais contrairement à ce concept de responsabilité avec un agent central, les demandes sont acceptées par toutes les classes.

    Le composant logiciel à étendre est « décoré » selon le patron de conception Décorateur avec une ou plusieurs classes de Decorator qui entourent complètement le composant. Chaque Décorateur est du même type que le composant joint et a donc la même interface. Cela lui permet de déléguer facilement les appels de méthode entrants au composant lié, tout en exécutant éventuellement son propre comportement avant ou après. Il est également possible de traiter un appel directement chez le Décorateur.

    À quoi sert le patron Décorateur ?

    Comme d’autres modèles GoF, tels que le Strategy Pattern ou le Builder Pattern, le patron Decorator vise à rendre les composants des logiciels orientés objet plus flexibles et plus faciles à réutiliser. À cette fin, l’approche fournit la solution pour ajouter ou supprimer des dépendances à un objet de manière dynamique et - si nécessaire - pendant l’exécution. Pour cette raison en particulier, le modèle est une bonne alternative à l’utilisation de sous-classes : elles peuvent également compléter une classe de différentes manières, mais ne permettent pas d’effectuer des ajustements pendant l’exécution.

    Note

    Un composant logiciel peut être étendu par un nombre quelconque de classes Decorator. Pour l’accès aux instances, ces extensions restent totalement invisibles, de sorte qu’elles ne remarquent même pas que des classes supplémentaires précèdent la classe réelle.

    Decorator Pattern : diagramme UML pour illustration

    Le Décorateur ou plutôt les classes Décorateur (DécorateurConcret) ont la même interface que le composant logiciel à décorer (ComposantConcret) et sont du même type. Ceci est important pour le traitement des appels, qui sont transmis soit inchangés, soit modifiés si le Décorateur ne s’occupe pas lui-même du traitement. Dans le concept de motif Décorateur, cette interface élémentaire, qui est essentiellement une superclasse abstraite, est appelée « composant ».

    L’interaction entre le composant de base et le décorateur peut être illustrée au mieux par une représentation graphique des relations sous la forme d’un diagramme de classes UML. Dans l’illustration abstraite suivante du Decorator Pattern, nous avons donc utilisé le langage de modélisation pour la programmation orientée objet.

    Decorator pattern : explication, représentation UML et exemple

    L’illustration du Decorator Pattern montre deux classes différentes de DécorateurConcret avec des fonctions additionnelles, le nombre a été choisi à titre d’exemple dans ce cas.

    Les avantages et les inconvénients du Decorator Pattern en un coup d’œil

    La prise en compte du patron Décorateur lors de la conception d’un logiciel est payante pour plusieurs raisons. Tout d’abord, il y a le haut degré de flexibilité qui vient avec une telle structure de décorateur : tant au moment de la compilation qu’à l’exécution, les classes peuvent être étendues avec de nouveaux comportements sans héritage. Cette approche de programmation n’entraîne pas de hiérarchies d’héritage floues, ce qui améliore également la lisibilité du code du programme.

    Le fait que la fonctionnalité soit répartie entre plusieurs classes de décorateurs augmente également la performance du logiciel. Ainsi, vous pouvez appeler et lancer les fonctions dont vous avez besoin pour le moment. Avec une classe de base complexe, qui fournit toutes les fonctions en permanence, cette option optimisée en termes de ressources n’est pas disponible.

    Cependant, le développement selon le patron Decorator n’a pas que des avantages : avec l’introduction du modèle, la complexité du logicielaugmente automatiquement. L’interface de Decorator en particulier est généralement très verbeuse et associée à de nombreux nouveaux termes, et donc tout sauf facile d’accès pour les débutants. Un autre inconvénient est le grand nombre d’objets Decorator, pour lesquels une systématisation séparée est recommandée afin d’éviter d’être confronté à des problèmes de vue d’ensemble, similaires à ceux rencontrés lors du travail avec des sous-classes. Les chaînes d’appel souvent très longues des objets décorés (c’est-à-dire les composants logiciels étendus) rendent également plus difficile la recherche d’erreurs et donc le processus de débogage en général.

    Avantages Inconvénients
    Un degré élevé de flexibilité Grande complexité du logiciel (en particulier l’interface Decorator)
    Extension des fonctions des classes sans héritage Ne convient pas aux débutants
    Un code de programme bien lisible Nombre élevé d’objets
    Appels de fonction optimisés pour les ressources Processus de débogage difficile

    Patron Décorateur : scénarios d’application typiques

    Le Decorator Pattern constitue la base des objets dynamiques et transparents d’un logiciel. Les composants d’interfaces utilisateur graphiquessont un domaine d’application typique du patron : si, par exemple, un champ de texte doit être pourvu d’une bordure, un décorateur correspondant qui est « invisiblement » commuté entre l’objet champ de texte et l’appel est suffisant pour insérer ce nouvel élément d’interface.

    Un exemple très connu de la mise en œuvre du patron de conception Décorateur est celui des classes de flux de la bibliothèque Java, qui sont responsables du traitement des données d’entrée et de sortie. Les classes de décorateurs sont utilisées ici notamment pour ajouter de nouvelles propriétés et informations de statut au flux de données ou pour fournir de nouvelles interfaces.

    Bien entendu, Java n’est pas le seul langage de programmation dans lequel l’utilisation du patron Décorateur est courante. Les langages suivants s’appuient également sur le patron Decorator :

    • C++
    • C#
    • Go
    • JavaScript
    • Python
    • PHP

    Exemple pratique pour la mise en œuvre du Decorator Pattern

    La liste des avantages et des inconvénients montre que le patron Décorateur ne convient pas à tous les types de logiciels. Cependant, lorsqu’une classe doit être changée par la suite, et surtout dans les projets où cela ne peut se faire en utilisant des sous-classes, le modèle de conception est une solution de premier ordre.

    Le point de départ dans ce cas est un logiciel qui rend les noms des personnes accessibles via la classe abstraite « employé ». Cependant, la première lettre des noms retrouvés est toujours en minuscule. Comme une adaptation ultérieure est impossible, la classe de décorateur « EmployéDecorator » est implémentée, qui fonctionne via la même interface et permet également l’appel de la méthode getName(). En outre, le décorateur reçoit une logique qui garantit que la première lettre est correctement mise en majuscule. L’exemple de code approprié ressemble à ceci :

    public class EmployéDecorator implements Person { private Employé employé; public EmployéDecorator(Employé employé){ this.employé = employé; } public String getName(){ // appelle la méthode de la classe d’employés String name = employé.getName(); // Veillez à ce que la première lettre soit en majuscule ici name = Character.toUpperCase(name.charAt(0)) + name.substring(1, name.length()); return name; } }

Touche Tab : fonctions de la touche tab Touche Tab : fonctions de la touche tab

Touche Tab : fonctions de la touche tab

  • 2021-02-27 00:03:08 | Tutoriels

La touche Tab : les principales fonctions de la touche tabLa touche Tab ou touche de tabulation, était déjà présente sur les claviers des machines à écrire mécaniques. Au départ, cette touche avait pour fonction de faciliter la création de tableaux et de permettre de changer de colonne grâce à une s...

  • facebook
  • twitter
  • xing
  • linkedin
Politique de confidentialité 2021 pour site Web : modèle et explications Politique de confidentialité 2021 pour site Web : modèle et explications

Politique de confidentialité 2021 pour site Web : modèle et explications

  • 2021-02-27 00:02:13 | Tutoriels

La politique de confidentialité sur InternetUne politique de confidentialité (Privacy Policy en anglais) est un exposé écrit de toutes les mesures que doit prendre une entreprise ou une organisation, afin de garantir à ses clients ou utilisateurs sécurité et utilisation appropriée des données qui on...

  • facebook
  • twitter
  • xing
  • linkedin
Création de site Internet pour coiffeur : explication détaillée Création de site Internet pour coiffeur : explication détaillée

Création de site Internet pour coiffeur : explication détaillée

  • 2021-02-27 00:02:04 | Tutoriels

Création de site Internet pour les coiffeurs : une solution rapide, facile et rentableLes coiffeurs répondent à un besoin fondamental et leurs services seront toujours très demandés. Cependant, la concurrence est rude dans de nombreuses régions de France. Que vous dirigiez un grand salon de coiffure...

  • facebook
  • twitter
  • xing
  • linkedin
9 conseils pour trouver des données utilisateur WordPress cachées pour développer votre entreprise 9 conseils pour trouver des données utilisateur WordPress cachées pour développer votre entreprise

9 conseils pour trouver des données utilisateur WordPress cachées pour développer votre entreprise

  • 2021-02-26 08:05:02 | Tutoriels

De nombreux débutants ne savent pas que votre site Web contient des informations sur les utilisateurs WordPress cachées que vous pouvez utiliser pour développer votre entreprise. La recherche de données utilisateur masquées peut vous aider à mieux comprendre votre audience, à suivre les prospects, à...

  • facebook
  • twitter
  • xing
  • linkedin
Comment exiger une adresse e-mail pour télécharger un fichier dans WordPress Comment exiger une adresse e-mail pour télécharger un fichier dans WordPress

Comment exiger une adresse e-mail pour télécharger un fichier dans WordPress

  • 2021-02-26 08:03:13 | Tutoriels

Voulez-vous que les utilisateurs saisissent une adresse e-mail avant de télécharger un fichier à partir de votre site WordPress? De nombreuses entreprises utilisent des téléchargements de fichiers gratuits tels que des livres électroniques, des livres blancs, etc. pour collecter des adresses e-mail ...

  • facebook
  • twitter
  • xing
  • linkedin
Comment afficher des images en taille réelle dans WordPress (4 méthodes) Comment afficher des images en taille réelle dans WordPress (4 méthodes)

Comment afficher des images en taille réelle dans WordPress (4 méthodes)

  • 2021-02-26 08:00:22 | Tutoriels

Voulez-vous apprendre à afficher des images en taille réelle dans WordPress? La dernière version de WordPress redimensionne automatiquement les grandes images pour améliorer les performances. Mais parfois, vous devrez peut-être afficher des images de plus grandes dimensions. Dans ce didacticiel, nou...

  • facebook
  • twitter
  • xing
  • linkedin
LXD : gérer les conteneurs avec le conteneur « Linux Container Daemon » LXD : gérer les conteneurs avec le conteneur « Linux Container Daemon »

LXD : gérer les conteneurs avec le conteneur « Linux Container Daemon »

  • 2021-02-26 00:04:58 | Tutoriels

Qu’est-ce que LXD ? Gestion des conteneurs avec le Linux Container DaemonLXD, le « Linux Container Daemon », est un outil de gestion des conteneurs du système d’exploitation Linux. Il a été développé par Canonical, la société à l’origine d’Ubuntu Linux. Canonical poursuit le développement de LXD jus...

  • facebook
  • twitter
  • xing
  • linkedin
IAM : à quoi sert la gestion des identités et des accès ? IAM : à quoi sert la gestion des identités et des accès ?

IAM : à quoi sert la gestion des identités et des accès ?

  • 2021-02-26 00:04:25 | Tutoriels

IAM : qu’est-ce que l’Identity and Access Management ? Le flot des données augmente jour après jour : pour les entreprises, les autorités et autres organisations, cela implique désormais d’administrer les données de milliers d’utilisateurs avec des droits d’accès très variés, sur un très grand nombr...

  • facebook
  • twitter
  • xing
  • linkedin
Apprendre le Lua | Tutoriel et bases du langage de script Apprendre le Lua | Tutoriel et bases du langage de script

Apprendre le Lua | Tutoriel et bases du langage de script

  • 2021-02-26 00:03:17 | Tutoriels

Apprendre le LuaLua est un langage de script développé au Brésil au début des années 1990. Le code source d’un programme en Lua est traduit et exécuté sous forme de code byte par un interpréteur Lua. L’interpréteur lui-même est codé en C, ce qui permet aux programmes en Lua de disposer d’une perform...

  • facebook
  • twitter
  • xing
  • linkedin
WordPress Staging : un environnement de test WordPress sûr WordPress Staging : un environnement de test WordPress sûr

WordPress Staging : un environnement de test WordPress sûr

  • 2021-02-26 00:02:15 | Tutoriels

WordPress Staging : développer et tester sans erreursPlus de 60 % des sites Internet dans le monde ont recours au système de gestion de contenu (CMS) WordPress. Proposé gratuitement, ce système est facile à installer et à utiliser et fait l’objet d’un développement constant grâce à sa vaste communau...

  • facebook
  • twitter
  • xing
  • linkedin
Les extensions de domaines les plus populaires 2021 | Top 10 des TLD Les extensions de domaines les plus populaires 2021 | Top 10 des TLD

Les extensions de domaines les plus populaires 2021 | Top 10 des TLD

  • 2021-02-25 00:02:44 | Tutoriels

Le saviez-vous ? Voici les extensions de domaines les plus populaires en 2021 ! Une extension de domaine en . fr ou . com n’est pas seulement nécessaire à l’URL : les domaines dits de premier niveau (TLD) font également partie intégrante d’une marque. Les entreprises attachent donc une grande import...

  • facebook
  • twitter
  • xing
  • linkedin
Comment créer des superpositions et des survols Flipbox dans WordPress Comment créer des superpositions et des survols Flipbox dans WordPress

Comment créer des superpositions et des survols Flipbox dans WordPress

  • 2021-02-24 08:00:46 | Tutoriels

Vous voulez ajouter des superpositions de flipbox et des effets de survol d'image à votre site WordPress? Même si vous utilisez un thème WordPress de haute qualité, vous pourriez vous sentir limité par les options de personnalisation. Les Flipbox et les survols d'image ajoutent des effets animés acc...

  • facebook
  • twitter
  • xing
  • linkedin
Facade pattern : définition, diagramme de classes UML, exemples Facade pattern : définition, diagramme de classes UML, exemples

Facade pattern : définition, diagramme de classes UML, exemples

  • 2021-02-24 00:02:44 | Tutoriels

Facade pattern : interfaces uniformes pour les projets de logicielsEn recherchant des stratégies appropriées pour simplifier des logiciels complexes, on tombe inévitablement sur le design pattern facade (patron de conception de façade en français) ou patron de façade pour faire court. Avec d’autres ...

  • facebook
  • twitter
  • xing
  • linkedin
Builder pattern : une programmation plus rapide avec le patron builder Builder pattern : une programmation plus rapide avec le patron builder

Builder pattern : une programmation plus rapide avec le patron builder

  • 2021-02-24 00:02:10 | Tutoriels

Qu’est-ce que le « builder pattern » ? Le builder pattern fait partie des design patterns, c’est-à-dire des patrons de conception qui permettent de résoudre les problèmes de programmation dans la programmation orientée objet (POO). Ils facilitent la programmation pour les développeurs : ainsi, vous ...

  • facebook
  • twitter
  • xing
  • linkedin
Comment ajouter un alias de domaine personnalisé pour votre page de destination WordPress Comment ajouter un alias de domaine personnalisé pour votre page de destination WordPress

Comment ajouter un alias de domaine personnalisé pour votre page de destination WordPress

  • 2021-02-23 08:00:11 | Tutoriels

Voulez-vous ajouter un alias de domaine personnalisé pour votre page de destination WordPress? Au lieu d'installer un site Web WordPress séparé, ne serait-il pas bien si vous pouviez utiliser votre WordPress existant pour créer des pages de destination et diriger différents domaines vers des pages d...

  • facebook
  • twitter
  • xing
  • linkedin