4. Qu'est ce qu'un patron de conception ?
L'utilisation actuelle vient des travaux de l'architecte Christopher
Alexander
Alexander a étudié les manières d'améliorer le processus de
conception de bâtiments et des zones urbaines
Chaque patron est une règle en 3 parties, qui exprime une
relation entre un certain contexte, un problème et une solution.”
“ Chaque patron est une règle en 3 parties, qui exprime une
relation entre un certain contexte, un problème et une solution.”
La définition habituelle d'un patron est : “Une solution à un
problème dans un contexte.”
5. Pourquoi utiliser les patrons ?
"Concevoir un logiciel orienté-objet est difficile, et concevoir un
logiciel orienté-objet réutilisable est encore plus difficile." - Erich
Gamma,
Les concepteurs expérimentés réutilise des solutions qui ont
fonctionné dans le passé,
Les systèmes orientés-objet bien structurés suivent des patrons
récurrents pour les classes et objets,
Les patrons qui ont fonctionné dans le passé permettent d'être
plus productif. Les conceptions qui en résultent sont plus
flexibles et réutilisables.
7. Types de patrons logiciels
Les chercheurs mentionnent 3 types de patron logiciels.
1. Patrons conceptuels
Patrons dont la forme est décrite par les termes et concepts du domaine
d'application
2. Patrons de conception
Patrons dont la forme est décrite par les éléments de construction de
conception logicielle (par exemple objets, classes, héritage et aggrégats)
3. Patrons de programmation
Patron dont la forme est décrite par les éléments de construction du langage
de programmation
8. Classification du Gang of Four « GoF » pour les
patrons de conception
On distingue trois familles de patrons de conception selon leur utilisation :
1. Patrons de création
Concernent le processus de la création d'objets
Les patrons de création aident à créer des objets pour vous, au lieu d’avoir à
instancier les objets directement.
2. Patrons de structure
Concernent la composition de classes et d'objets
Les patrons de structure aident à composer des groupes d’objets en des structures
plus larges, telles que des interfaces utilisateur complexes.
3. Patrons de comportement
Concernent l'interaction des classes et des objets
Les patrons de comportement aident à définir la communication entre les objets du
système et définir comment le flux est controlé.
9. 1. Patrons de création
Fabrique
Une méthode dans une classe dérivée créé les instances associées
Fabrique abstraite
Fabrique pour construire des objets liés
Monteur
Fabrique pour construire des objets complexes de manière incrémentale
Prototype
Fabrique pour cloner de nouvelles instances d'un prototype
Singleton
Fabrique pour n'avoir qu'une seule et unique instance
10. 2. Patrons de structure
Adaptateur
Un traducteur qui adapte une interface de serveur pour un client
Pont
Découpler l'interface d'une classe et son implémentation
Objet composite
Structure pour construire des aggrégats récursifs
Décorateur
Etend un objet de manière transparente
Façade
Façade simplifie l'interface pour un sous-système
Poids-mouche
De nombreux objets partagés efficacement
Proxy
Un objet est l'approximation d'un autre
11. 3. Patrons de comportement
Chaine de responsabilité
Requête déléguée au fournisseur de service responsable
Commande
Requête comme objet de première classe
Interpréteur
Interpréteur de langage pour une petite grammaire
Itérateur
Eléments d'un agrégat sont atteints séquentiellement
Médiateur
Médiateur coordonnes les interactions entre ses associés
Memento
Une photo qui capture et restaure des états d'objets
12. 3. Patrons de comportement
Observateur
Les observateurs sont mis au courant des changements des observés
Etat
Object dont le comportement dépend de son état
Stratégie
Abstraction pour la sélection d'un parmi plusieurs algorithmes
Patron de méthode
Algorithme avec des pas fournit par une classe dérivée
Visiteur
Opérations appliquée aux éléments d'une structure d'objet hétérogène
16. Exemple 2
Problématique :
Un serveur web gère des documents destinés aux clients. La
classe abstraite Document a été définie pour cette gestion. Une
première classe d’implantation de cette interface a été réalisée :
DocumentHTML. Mais l’ajout de documents PDF a posé un problème
(car plus complexes à construire et à gérer que html), Un composant
de marché a été choisi et doit être intégré à l’application (classe
ComposantPDF) mais son interface ne correspond pas à celle de
Document.
17. Exemple 2
Solution :
Utiliser le pattern Adaptateur pour que le serveur Web puisse
gérer des documents HTML et PDF. Spécifier l'implémentation de la
nouvelle classe.
19. Bénéfices des patrons de conception
Capturent l'expertise et la rendent accessible à des non-experts
Réduisent le temps de développement
Facilitent la communication entre les développeurs en fournissant un
langage commun
Facilitent la réutilisation réussie de conceptions
Améliorent la documentation de conception
Améliorent la compréhensibilité des conceptions
20. Références
Design Patterns: Elements of Reusable Object-Oriented Software,
Gamma, Helm, Johnson and Vlissides, Addison-Wesley, 1995
https://fr.wikibooks.org/wiki/Patrons_de_conception
https://github.com/dieforfree/edsebooks/blob/master/ebooks/Desig
n%20Patterns%2C%20Elements%20of%20Reusable%20Object-
Oriented%20Software.pdf
Notes de l'éditeur
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns
Erich Gamma est un des quatre auteurs du livre Design Patterns