Patrons de conception logicielle
Les patrons de conception logicielle sont des solutions nommées et réutilisables à des problèmes de conception récurrents, qui formalisent les pratiques expertes sous une forme communicable, enseignable et applicable à travers différents systèmes.
Definition
Un patron de conception est une description générale et réutilisable d'une solution à un problème de conception récurrent dans un contexte donné, exprimée en termes d'éléments participants, de leurs relations et des compromis qu'implique la solution.
Scope
Ce sujet couvre les patrons classiques de conception orientée objet : créationnels, structurels et comportementaux ; la structure d'un patron (nom, problème, solution, conséquences) ; les catalogues de patrons et les langages de patrons ; les patrons d'entreprise et de concurrence ; ainsi que l'utilisation appropriée et inappropriée des patrons, y compris le risque de sur-ingénierie.
Core questions
- Quels problèmes de conception récurrents les patrons standards abordent-ils ?
- Comment les patrons créationnels, structurels et comportementaux se distinguent-ils ?
- Comment un patron documente-t-il son problème, sa solution et ses conséquences ?
- Quand l'application d'un patron est-elle bénéfique, et quand ajoute-t-elle une complexité inutile ?
Key theories
- Patrons créationnels, structurels et comportementaux
- Le catalogue du « Gang of Four » organise les patrons par objectif — les patrons créationnels abstraient l'instanciation d'objets, les patrons structurels composent des objets en structures plus grandes, et les patrons comportementaux assignent les responsabilités et gèrent la communication.
- Les patrons comme expérience de conception formalisée
- Les patrons codifient les solutions expertes et fournissent un vocabulaire partagé, élevant le niveau du discours de conception ; un langage de patrons relie les patrons de manière à ce que la résolution d'un problème mène au suivant, guidant la conception globale.
Clinical relevance
Les patrons améliorent la communication et la qualité de la conception en réutilisant des structures éprouvées et en offrant aux équipes un vocabulaire commun ; appliqués sans discernement, cependant, ils peuvent introduire de l'indirection et de la complexité, de sorte que leur valeur dépend de l'adéquation du patron au problème réel.
History
Inspirée par les langages de patrons architecturaux de Christopher Alexander, la communauté logicielle a formalisé les patrons de conception avec le catalogue du « Gang of Four » en 1994 ; les travaux ultérieurs ont étendu les patrons à l'architecture, à la concurrence et aux applications d'entreprise, faisant des patrons un élément essentiel de l'enseignement de la conception.
Debates
- Les patrons : sagesse ou symptôme d'une déficience linguistique ?
- Certains soutiennent que le besoin de certains patrons révèle des fonctionnalités linguistiques manquantes, et que l'utilisation excessive de patrons conduit à la sur-ingénierie ; d'autres considèrent les patrons comme un vocabulaire de conception durable, indépendant de tout langage.
Key figures
- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
- Martin Fowler
Related topics
Seminal works
- gamma1994
- buschmann1996
- fowler2002
Frequently asked questions
- Les patrons de conception sont-ils liés à un langage de programmation spécifique ?
- Les patrons classiques sont décrits en termes orientés objet et illustrés dans des langages particuliers, mais les concepts sont indépendants du langage ; la manière dont un patron est réalisé varie, et certains patrons deviennent triviaux ou inutiles dans les langages dotés de fonctions de première classe ou d'autres fonctionnalités.
- L'utilisation excessive de patrons de conception peut-elle être nuisible ?
- Oui. Imposer des patrons là où une solution plus simple suffirait ajoute de l'indirection et une charge cognitive ; les patrons devraient être appliqués parce qu'ils résolvent un problème récurrent réel dans la conception, et non comme un style par défaut.