Motifs de conception / Design Patterns
Cette conférence présente les motifs de conception, ou design patterns, qui sont des solutions éprouvées à des problèmes récurrents en conception orientée objet. Elle s’inscrit dans un cours de génie logiciel et vise à simplifier la conception logicielle tout en proposant un vocabulaire commun aux développeurs.
D'après le document Motifs de conception / Design Patterns
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source
Software Engineering · PDF · 15 pages · 2014
Afficher l'aperçu du document
Cette conférence présente les motifs de conception, ou design patterns, qui sont des solutions éprouvées à des problèmes récurrents en conception orientée objet. Elle s’inscrit dans un cours de génie logiciel et vise à simplifier la conception logicielle tout en proposant un vocabulaire commun aux développeurs.
Introduction aux motifs de conception
La conception logicielle peut rapidement devenir complexe et difficile à maîtriser, notamment à cause des dépendances, des redondances et de la complexité croissante des systèmes. Il est donc essentiel de capitaliser l’expérience acquise et d’éviter de réinventer la roue. Les design patterns apportent des solutions à des problèmes récurrents en conception objet, facilitant ainsi la création de logiciels robustes et maintenables. Ils définissent également un vocabulaire commun qui facilite la communication entre développeurs.
Présentation générale des design patterns
Les motifs de conception sont formulés de manière abstraite, indépendamment du contexte ou de l’application spécifique. Chaque pattern est décrit par :
- Un nom
- Le problème traité (le but)
- La solution proposée et ses bénéfices (le moyen)
- Les conséquences et remarques éventuelles concernant l’implémentation
Exemples de motifs de conception
Composite
Le motif Composite permet de traiter de manière indifférente des objets simples ou des ensembles d’objets. Il repose sur une classe abstraite qui est dérivée en feuilles (objets simples) et en composites (objets composés). Les composites contiennent des composants abstraits, et l’opération principale du composite consiste typiquement en une boucle sur ses composants.
Singleton
Le Singleton garantit qu’une seule instance d’une classe donnée existe. Pour cela :
- Le constructeur est privé
- Une seule instance est stockée dans une variable de classe statique
- Cette instance est accessible via une méthode spécifique
- Elle est créée soit de façon statique, soit au premier appel de cette méthode
Il est important de gérer les accès concurrents à la méthode getInstance pour éviter les problèmes en environnement multithread.
Stratégie
Le motif Stratégie permet à un objet de modifier dynamiquement son comportement sans changer de classe. Le comportement n’est pas implémenté directement dans la classe de l’objet, mais dans des classes distinctes représentant différentes stratégies. L’objet contient une instance de stratégie qu’il peut modifier à tout moment.
Itérateur
Le motif Itérateur découple la structure de données de l’itération sur ses éléments. La structure fournit des itérateurs qui permettent de parcourir ses éléments sans exposer sa représentation interne. Plusieurs itérations simultanées sur la même structure sont possibles. La structure n’a pas besoin d’être un agrégat classique.
Usine / Factory Method
Ce motif permet de créer des objets sans connaître leur type précis. Les objets à créer héritent d’une classe abstraite commune C. Une usine abstraite U permet de créer des objets de type C. Pour chaque type concret C0, une classe U0 hérite de U et réalise la création. Il ne faut pas confondre ce pattern avec l’Usine abstraite (Abstract Factory) qui est une variante plus générale. La méthode Factory Method utilise une seule classe d’usine.
Adaptateur (de classe)
Le motif Adaptateur de classe permet d’utiliser une classe C qui n’implémente pas une interface requise. On crée une nouvelle classe C0 qui hérite de C et implémente l’interface requise. Les méthodes de C0 sont définies en utilisant celles de la superclasse C.
Adaptateur (d’objet)
Similaire à l’adaptateur de classe, mais ici on crée une nouvelle classe C0 qui implémente l’interface requise et utilise une instance de C par délégation pour définir ses méthodes. L’adaptateur de classe limite le nombre d’instances et d’indirections, tandis que l’adaptateur d’objet permet d’adapter une hiérarchie de classes.
Façade
Le motif Façade vise à simplifier l’utilisation d’un ensemble de classes pour des tâches courantes. Une classe Façade propose des méthodes qui réalisent ces tâches usuelles en utilisant l’ensemble des autres classes du système, masquant ainsi leur complexité.
Observateur / Observé
Ce motif permet à des objets (observateurs) de prendre en compte les changements d’autres objets (observés) au moment où ces changements se produisent. Les observateurs ne doivent pas modifier les objets observés lorsqu’ils sont notifiés, ce qui garantit une séparation claire des responsabilités.
Décorateur
Le motif Décorateur permet d’attacher dynamiquement des caractéristiques à des objets sans devoir créer un grand nombre de sous-classes. Pour chaque caractéristique, une classe Décoration est créée. Chaque décorateur contient un objet auquel il ajoute des fonctionnalités, et ce de manière récursive.
Chaîne de responsabilité
Ce motif évite le couplage direct entre la source d’une requête et son destinataire. Plusieurs classes peuvent traiter la requête sans se connaître. Les objets traitants sont chaînés, et la requête est passée le long de cette chaîne jusqu’à ce qu’elle soit traitée.
Remarques générales
- Les design patterns sont des structures abstraites qu’il faut instancier selon le contexte.
- Pour chaque motif, il existe de nombreuses variantes, voire des possibilités d’en imaginer de nouvelles.
- La conférence ne présente qu’un sous-ensemble des motifs de conception existants.
- Pour approfondir, il existe des catalogues de modèles de conception réutilisables, tels que celui d’Erich Gamma et al. (1999) ou des ressources en ligne comme http://c2.com/cgi/wiki?CategoryPattern et http://sourcemaking.com/design_patterns.
Points clés
- Les design patterns apportent des solutions réutilisables à des problèmes fréquents en conception orientée objet.
- Ils facilitent la communication grâce à un vocabulaire commun.
- Chaque pattern décrit un problème, une solution, ses bénéfices et ses conséquences.
- Les motifs présentés incluent Composite, Singleton, Stratégie, Itérateur, Usine, Adaptateur, Façade, Observateur, Décorateur et Chaîne de responsabilité.
- Les patterns peuvent être adaptés et combinés selon les besoins spécifiques du projet.
Commentaires
Aucun commentaire pour le moment. Posez la première question.