Introduction aux Design patterns

Rédigé par Mathieu G. - Ecrit le 22/04/2007 et mis à jour le 29/12/2022

Cet article a pour objectif de présenter les Design Patterns. Il expose un historique succinct, la définition et la représentation des Design Patterns, leurs avantages et leurs organisations.


Différents termes

Tout d’abord, les Design Patterns ont plusieurs noms francisés qui permettent de les désigner. Les plus courants sont ’motif de conception’, ’modèle de conception’ ou encore ’patron de conception’. La signification de ces termes est équivalente. Cependant, suivant les goûts des personnes, certains termes apparaissent plus parlants que d’autres.


Historique

L’origine des Design Patterns remonte au début des années 70 avec les travaux de l’architecte Christopher Alexander. Celui-ci remarque que la phase de conception en architecture laisse apparaître des problèmes récurrents. Il cherche alors à résoudre l’ensemble de ces problèmes liés à des contraintes interdépendantes (solidité de la structure, étanchéité...). Pour cela Alexander établi un langage de 253 patterns, qui couvrent tous les aspects de la construction (comme par exemple la façon de concevoir une charpente).

Dans les années 90, l’idée de Christopher Alexander va être reprise et étendue au domaine de la conception des logiciels. Le concept de Design Pattern est développé dans un ouvrage publié en 1995 par le ’Gang of Four’. Cette équipe qui regroupe Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides intitule ce livre ’Design Patterns : Elements of Reusable Object-Oriented Software’. Celui-ci présente 23 Design Patterns qui font aujourd’hui référence dans le monde de l’informatique.


Définition

Un Design Pattern est une solution à un problème récurrent dans la conception d’applications orientées objet. Un patron de conception décrit alors la solution éprouvée pour résoudre ce problème d’architecture de logiciel. Comme problème récurrent on trouve par exemple la conception d’une application où il sera facile d’ajouter des fonctionnalités à une classe sans la modifier (voir la solution du Design Pattern Visiteur). A noter qu’en se plaçant au niveau de la conception les Design Patterns sont indépendants des langages de programmation utilisés.


Représentation d’un patron de conception

Les Design Patterns sont représentés par :

  • Nom : qui permet de l’identifier clairement
  • Problématique : description du problème auquel il répond
  • Solution : description de la solution souvent accompagnée d’un schéma UML
  • Conséquences : les avantages et les inconvénients de cette solution

Les avantages

L’utilisation des Design Patterns offre de nombreux avantages. Tout d’abord cela permet de répondre à un problème de conception grâce à une solution éprouvée et validée par des experts. Ainsi on gagne en rapidité et en qualité de conception ce qui diminue également les coûts.

De plus, les Design Patterns sont réutilisables et permettent de mettre en avant les bonnes pratiques de conception.

Les Design Patterns étant largement documentés et connus d’un grand nombre de développeurs ils permettent également de faciliter la communication. Si un développeur annonce que sur ce point du projet il va utiliser le Design Pattern Observateur il est compris des informaticiens sans pour autant rentrer dans les détails de la conception (diagramme UML, objectif visé...).


Organisation des patrons de conception

Les patrons de conception sont classés en trois catégories :

  • Création : ils permettent d’instancier et de configurer des classes et des objets.
  • Structure : ils permettent d’organiser les classes d’une application.
  • Comportement : ils permettent d'organiser les objets pour qu’ils collaborent entre eux.

Cette petite introduction sur les Design Patterns touche à sa fin. En parcourant ce site vous en apprendrez plus sur ce sujet. Mais attention une fois qu’on a touché aux Design Patterns il est difficile de s’en passer ;)

Commentaires

Introduction aux Design Patterns

Soumis par Mathieu G. le Mardi 29/05/2007 11:10

N’hésitez pas à faire partager vos questions et vos remarques :)

Introduction aux Design Patterns

Soumis par did le Mardi 31/07/2007 15:47

Je débute en programmation Java et les Design Patterns. Bravo pour cette présentation claire et concise. Vos descriptions des Design Patterns semblent être tout aussi intéressantes (pour l’instant je n’ai lu que 3 modèles de conception) et la mise en application avec le code que vous fournissez est très simple. Je vais poursuivre la lecture ...

Introduction aux Design Patterns

Soumis par Thomas le Jeudi 19/06/2008 17:59

Bravo, c’est très clair et très instructif ! J’aurais voulu lire une description pour chaque design pattern existant, mais les trois qui sont exposés valent à ce site d’être déjà qualifié de référence !

Introduction aux Design Patterns

Soumis par g b le Samedi 05/07/2008 21:29

bonsoir : c’est un tres bon resume sur les patterns langages de l’architecte mathematicien ,informaticien :c’est un tout qui fait une partie et une partie qui fait le tout en trouve la solution de l’enigme de relation meronomie et la relation holonymie dans la personnalite de mr christoper Alexander.

Introduction aux Design Patterns

Soumis par Anonyme le Samedi 04/10/2008 14:33

Très bonne introduction aux designs patterns, vous m’avez aider à savoir leurs principe

Introduction aux Design Patterns

Soumis par Mathieu G. le Mardi 11/11/2008 10:33

Merci pour vos encouragements. Le site va évoluer prochainement.

Introduction aux Design Patterns

Soumis par BokC le Mercredi 11/02/2009 15:35

Très bonnes introductions. J’espère que ce site va évoluer. Besoin d’aide ?
(sinon une petite coquille : "partons" à la place de "patrons")

Introduction aux Design Patterns

Soumis par Mathieu G. le Samedi 14/02/2009 17:42

Merci pour votre remarque j’ai corrigé la coquille.
Oui le site va évoluer. Je souhaite le refondre assez profondément. L’écriture de nouveaux articles est actuellement en cours.
Je serai ravi d’obtenir de l’aide. Si vous souhaitez participer à ce projet n’hésitez pas à me contacter par mail.

Introduction aux Design Patterns

Soumis par aireau10 le Mardi 25/05/2010 17:16

Bonjour,
L’approche semble plutôt bonne et la lecture plutot agréable (les exemples sont toutefois un peu long à mon gout) pour ce sujet qui est assez délicat à traiter. La rigueur est appréciable, peu d’articles (wikipédia notamment) répondent systématiquement et clairement aux 4 notions clés des designs patterns (nom, pb, solution et conséquence).
En revanche attention à l’orthographe (Dans le paragraphe d’introduction "Il faut donc que celui-ci soit déclarer explicitement en privé" => "déclaré", dans décorateur "dés la conception" => "dès", "qui peuvent être ajouter aux desserts" => "ajoutés"), et j’ai un gros doute sur le fait que « synchronized » soit apparu en Java 1.5. Déjà en 1.4.2 je l’utilisais.
En tout cas merci pour ce travail

Introduction aux Design Patterns

Soumis par Mathieu G. le Jeudi 27/05/2010 21:33

Bonjour aireau10,
Merci pour vos remarques et votre relecture attentive. J’ai corrigé les fautes que vous avez identifiées et je vais faire mon possible pour les prochains articles.
Concernant votre remarque sur le mot clef "synchronized" je pense effectivement que vous avez raison. Cependant je n’ai pas réussi à vérifier cette information avec certitude donc j’ai préféré enlever cette indication de l’article. Ce qui m’a induit en erreur c’est la mauvaise implémentation avant Java 1.5 des systèmes de verrous.
J’espère pouvoir profiter de vos remarques avisées pour mes futurs articles.

Introduction aux Design Patterns

Soumis par lolo104 le Vendredi 30/07/2010 11:06

Bonjour je voudrais savoir comment on peut gerer les sessions avec Design Patterns ?
je developpe une application web ( JSP struts ) et pour le couche d’acces aux base de données j’utlise Design Pattern
Merccci bien

Introduction aux Design Patterns

Soumis par Mathieu G. le Jeudi 05/08/2010 21:37

Bonjour,
Afin de vous aider, merci de compléter votre question. Que rencontrez-vous comme problématique ? Quel Design Pattern utilisez-vous ?

Design Patterns

Soumis par ADIL le Jeudi 02/12/2010 00:53

on veux juste des tutoriaux des autres paterns

Design Patterns

Soumis par Mathieu G. le Vendredi 17/12/2010 20:55

Bonjour,
Je sais bien et je vais faire mon possible pour en publier de nouveaux.
A bientôt.

Introduction aux Design Patterns

Soumis par Anonyme le Mardi 16/08/2011 10:33

Merci pour cet éclaircissement général sur les design pattern ! Mais leur implémentation n’est pas évident !

Introduction aux Design Patterns

Soumis par Mathieu G. le Dimanche 21/08/2011 15:08

Merci pour ton commentaire. N’hésite pas à poser des questions sur les implémentations des patterns présentés sur ce site si besoin.

Introduction aux Design Patterns

Soumis par cédric S le Jeudi 20/10/2011 15:18

Bonjour,
Je voudrai savoir s’il est nécessaire de connaître tous les modèles de conceptions. Merci

Introduction aux Design Patterns

Soumis par Mathieu G. le Lundi 24/10/2011 22:22

Bonsoir Cédric,
Pour répondre à ta question je dirais que cela dépend de ton niveau d’intervention dans un projet informatique.
Un architecte logiciel se doit de connaître une grande partie des design patterns pour réaliser au mieux son travail.
Un développeur chargé de corriger des bugs dans une application peut se contenter de comprendre les design patterns utilisés dans cette application.
Cependant, il est toujours intéressant de maîtriser les principaux design patterns car ils répondent à des problèmes que l’on rencontre très régulièrement.

Introduction aux Design Patterns

Soumis par Cédric S le Mercredi 26/10/2011 01:06

Merci pour ta réponse. et je profite pour te remercier pour ce site que tu as mis en ligne. Moi je suis un jeune développeur j2ee(à peine 06mois d’expérience). Si je peux contribuer à l’évolution du site je reste disponible.

Introduction aux Design Patterns

Soumis par Mathieu G. le Mardi 08/11/2011 22:44

Merci pour ta proposition, car toute aide est la bienvenue.
Je vais te contacter par mail prochainement pour savoir quel type de contribution pourrait intéresser.
A bientôt.

Génial!

Soumis par Sounton Hodonou le Samedi 09/06/2012 21:12

Je trouve votre travail génial et même hyper génial; en tout cas pour les francophones.
Merci.

Génial!

Soumis par Mathieu G. le Lundi 11/06/2012 23:49

Merci pour vos encouragements.
Je vais essayer de faire aussi bien pour la suite.

Super

Soumis par Coconut le Mardi 25/12/2012 14:38

Bonjour,
C'est vraiment un très bon site, les patterns sont vraiment très bien expliqués. Dommage qu'il n'y en a pas d'autres comme:
Strategy, Composite, Iterator, Template Method, Builder, Proxy, Adapter, Bridge, Mediator, Chain of responsibility, memento, command, prototype, state, visitor, flyweight, facade, interpreter
Vivement la suite, et bonne continuation ;)

Super

Soumis par Mathieu G. le Mardi 08/01/2013 22:08

Merci pour le commentaire.
La liste des autres patterns est effectivement encore longue.
J'espère pouvoir en ajouter prochainement un nouveau afin de compléter la petite collection du site :)


Ajouter un commentaire

Saisissez la lettre figurant en majuscule dans le mot "patterRns" ?

Tous les champs sont obligatoires.
La publication n'est pas instantanée, elle intervient après un processus de modération.