Un patron de conception est une solution réutilisable, éprouvée et formalisée à un problème récurrent de conception logicielle.
Il ne s’agit pas d’un morceau de code prêt à l’emploi, mais d’un modèle conceptuel décrivant comment structurer les interactions entre classes ou objets pour rendre le code plus flexible, maintenable, lisible et évolutif.
Objectif :
« Résoudre une problématique structurelle sans réinventer la roue — en s’appuyant sur des schémas validés par la communauté. »
Caractéristiques communes
- Indépendant du langage : applicable en Java, Python, C#, JavaScript, etc.
- Abstrait : décrit une architecture, pas une implémentation figée.
- Contextuel : chaque patron répond à un problème spécifique dans un contexte donné.
- Non obligatoire : un bon code n’a pas besoin de patrons — mais ils aident à éviter les pièges classiques.
Exemples emblématiques
| Patron | Problème résolu | Principe |
|---|---|---|
| MVC (Modèle-Vue-Contrôleur) | Séparer préoccupations dans une interface utilisateur | – Modèle : données et logique métier<br>- Vue : affichage<br>- Contrôleur : gestion des entrées |
| Observer | Notifier automatiquement des changements d’état | Un sujet tient une liste d’observateurs qu’il alerte lorsqu’il change |
| Décorateur | Ajouter dynamiquement des responsabilités à un objet | Encapsule un objet dans un autre du même type pour étendre son comportement |
| State | Faire varier le comportement selon l’état interne | Chaque état est une classe ; l’objet délègue à l’état courant |
| Factory Method | Déléguer la création d’objets à des sous-classes | Une méthode abstraite instancie des objets concrets selon le contexte |
| Abstract Factory | Créer des familles d’objets liés | Une fabrique abstraite produit plusieurs types compatibles entre eux |
| Injection de dépendances | Réduire le couplage entre composants | Les dépendances sont fournies de l’extérieur (constructeur, setter, interface) |
À retenir
- Un patron n’est pas une recette magique : mal appliqué, il peut complexifier inutilement le code.
- Il vaut mieux comprendre le pourquoi que copier le comment.
- Dans les architectures modernes (microservices, fonctions serverless), certains patrons évoluent ou deviennent obsolètes.
Synonymes / termes associés
- Modèle de conception
- Design pattern (anglicisme courant)
- Schéma architectural (à ne pas confondre avec les architectural patterns comme Hexagonal, CQRS, etc.)