SlideShare une entreprise Scribd logo
patrons de conception
« Design patterns »
Maaroufi Mohamed Amine
2017-2018
Plan
Introduction
Types de patrons
Exemples d’un patron
Avantages d'utiliser des patrons
Introduction
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.”
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.
Types de patrons
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
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é.
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
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
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
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
Exemples
Exemple 1
Problématique
L’interface propriétaire ne correspond pas à celle utilisée dans
notre code, le système existant ne peut donc pas utiliser la classe
propriétaire.
Exemple 1
Solution : Créer un adaptateur
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.
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.
Avantages d'utiliser
des patrons
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
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
Patrons de conception

Contenu connexe

Tendances

UML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouriUML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouri
Mansouri Khalifa
 
119239 programmation-en-java-api
119239 programmation-en-java-api119239 programmation-en-java-api
119239 programmation-en-java-api
Wiem Ben Harrath
 

Tendances (20)

Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Java EE _ JSTL (1).pdf
Java EE _ JSTL (1).pdfJava EE _ JSTL (1).pdf
Java EE _ JSTL (1).pdf
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java
 
UML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouriUML Part 3- diagramme de séquences mansouri
UML Part 3- diagramme de séquences mansouri
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Servlets et JSP
Servlets et JSPServlets et JSP
Servlets et JSP
 
Chp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'UtilisationChp2 - Diagramme des Cas d'Utilisation
Chp2 - Diagramme des Cas d'Utilisation
 
Uml & cas d'utilisation
Uml & cas d'utilisationUml & cas d'utilisation
Uml & cas d'utilisation
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
119239 programmation-en-java-api
119239 programmation-en-java-api119239 programmation-en-java-api
119239 programmation-en-java-api
 

Similaire à Patrons de conception

Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
It Academy
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
arapilatico
 

Similaire à Patrons de conception (20)

Patrons de creation
Patrons de creationPatrons de creation
Patrons de creation
 
Design Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiquesDesign Pattern: Développement et Bonnes pratiques
Design Pattern: Développement et Bonnes pratiques
 
Design patterns gof fr
Design patterns gof frDesign patterns gof fr
Design patterns gof fr
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
DesignPatternsISI.pdf
DesignPatternsISI.pdfDesignPatternsISI.pdf
DesignPatternsISI.pdf
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Présentation cice telos
Présentation cice   telosPrésentation cice   telos
Présentation cice telos
 
Module development Patterns de Création.pptx
Module development Patterns de Création.pptxModule development Patterns de Création.pptx
Module development Patterns de Création.pptx
 
2-Composants.docx
2-Composants.docx2-Composants.docx
2-Composants.docx
 
Fondamentaux des CMS
Fondamentaux des CMSFondamentaux des CMS
Fondamentaux des CMS
 
Cours BDD.pptx
Cours BDD.pptxCours BDD.pptx
Cours BDD.pptx
 
Design patterns french
Design patterns frenchDesign patterns french
Design patterns french
 
Créer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShopCréer et intégrer son thème PrestaShop
Créer et intégrer son thème PrestaShop
 
Drupal 7 - Fondamentaux et ateliers
Drupal 7 - Fondamentaux et ateliersDrupal 7 - Fondamentaux et ateliers
Drupal 7 - Fondamentaux et ateliers
 
Framework Orienté objet
Framework Orienté objetFramework Orienté objet
Framework Orienté objet
 
srep_cours_06.pdf
srep_cours_06.pdfsrep_cours_06.pdf
srep_cours_06.pdf
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 

Dernier

Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieur
NdeyeAminataDond
 
support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...
ABDELHADI ENNAIR
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
schneiderbeatrice78
 

Dernier (13)

Épreuve de leçon SII.pptx
Épreuve de leçon  SII.pptxÉpreuve de leçon  SII.pptx
Épreuve de leçon SII.pptx
 
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
Présentation Webinaire Cohésion - Concevoir et mettre en place une CMDB, comm...
 
Cours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieurCours mécanique des fluides de l’ingénieur
Cours mécanique des fluides de l’ingénieur
 
Cahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdfCahier-de-Charges-Communication-Digitale-1-1.pdf
Cahier-de-Charges-Communication-Digitale-1-1.pdf
 
support de formation Consignation et déconsignation des energies et produits...
support de formation  Consignation et déconsignation des energies et produits...support de formation  Consignation et déconsignation des energies et produits...
support de formation Consignation et déconsignation des energies et produits...
 
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptxSainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
Sainte Jeanne d'Arc, patronne de la France 1412-1431.pptx
 
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
1-IMP-Tuto-Recherche simple avancée-V4-20240425-BS.pptx
 
Résultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdfRésultats enquête RH 2024 Fonction Publique.pdf
Résultats enquête RH 2024 Fonction Publique.pdf
 
Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016Guide d'utilisation Microsoft PowerPoint 2016
Guide d'utilisation Microsoft PowerPoint 2016
 
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
Newsletter SPW Agriculture en province du Luxembourg du 17-05-24
 
Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?Comment enseigner la langue française en Colombie?
Comment enseigner la langue française en Colombie?
 
Formation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distancielFormation M2i - Prise de parole face caméra : performer en distanciel
Formation M2i - Prise de parole face caméra : performer en distanciel
 
Bilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptxBilan schéma pour réun concertation SDLP V4.pptx
Bilan schéma pour réun concertation SDLP V4.pptx
 

Patrons de conception

  • 1. patrons de conception « Design patterns » Maaroufi Mohamed Amine 2017-2018
  • 2. Plan Introduction Types de patrons Exemples d’un patron Avantages d'utiliser des patrons
  • 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
  • 14. Exemple 1 Problématique L’interface propriétaire ne correspond pas à celle utilisée dans notre code, le système existant ne peut donc pas utiliser la classe propriétaire.
  • 15. Exemple 1 Solution : Créer un adaptateur
  • 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

  1. Erich Gamma est un des quatre auteurs du livre Design Patterns
  2. Erich Gamma est un des quatre auteurs du livre Design Patterns
  3. Erich Gamma est un des quatre auteurs du livre Design Patterns
  4. Erich Gamma est un des quatre auteurs du livre Design Patterns
  5. Erich Gamma est un des quatre auteurs du livre Design Patterns
  6. Erich Gamma est un des quatre auteurs du livre Design Patterns
  7. Erich Gamma est un des quatre auteurs du livre Design Patterns
  8. Erich Gamma est un des quatre auteurs du livre Design Patterns
  9. Erich Gamma est un des quatre auteurs du livre Design Patterns
  10. Erich Gamma est un des quatre auteurs du livre Design Patterns