Design PatternsPrésenté par Eric TOGUEM
Introduction2
Origines       Issus des travaux de larchitecte Christopher Alexander        (patrons en architecture des bâtiments)    ...
Qui suis je?       Eric Joël TOGUEM           CIO à AByster Inc.           Leader de CamerJUG,           Certification...
Design Pattern?       Description dune solution à un problème de conception       "Prouvé » sil a pu être utilisé dans a...
Design Pattern: 3 catégories       Créationnels : Définissent des mécanismes pour        linstanciation et/ou linitialisa...
Design pattern créationnels    Définissent des mécanismes pour linstanciation et/ou                    linitialisation dob...
5 design patterns créationnels       Fabrique Abstraite: Isole lappartenance à une famille        de classes       Monte...
Fabrique Abstraite (Abstract factory)       Objectif: Fournir une interface pour créer des objets        dune même famill...
Fabrique Abstraite (Abstract factory)10
Monteur (Builder)    Objectifs:        Séparer la construction dun objet complexe de sa         représentation.        ...
Monteur (Builder)12
Fabrique (Factory Method)    Objectifs: Déléguer linstanciation aux sous-classes.    Quand Utiliser: Au niveau d’une cla...
Fabrique (Factory Method)14
Prototype (Prototype)    Objectifs: Créer un nouvel objet à partir d’un     prototype.    Quand Utiliser: Le système doi...
Prototype (Prototype)16
Singleton (Singleton)    Objectifs        Restreindre le nombre d instances dune classe à une seule.        Fournir une...
Singleton (Singleton)18
Designs pattern structuraux          Organisent les interfaces/classes entre elles19
7 designs pattern structuraux    Adaptateur: Convertir linterface dune classe dans une autre     interface comprise par l...
Adaptateur (Adapter ou Wrapper)    Objectifs: Convertir linterface dune classe dans une     autre interface comprise par ...
Adaptateur (Adapter ou Wrapper)22
Pont (Bridge ou Handle/Body)    Objectifs: Découpler labstraction dun concept de son     implémentation.    Quand Utilis...
Pont (Bridge ou Handle/Body)24
Composite (Composite)    Objectifs: Permettre à la partie cliente de manipuler un     objet unique et un objet composé de...
Composite (Composite)26
Décorateur (Decorator ou Wrapper)    Objectifs: Ajouter dynamiquement des responsabilités à     un objet.    Quand Utili...
Décorateur (Decorator ou Wrapper)28
Façade (Facade)    Objectifs: Fournir une interface unique en remplacement     dun ensemble dinterfaces dun sous-système....
Façade (Facade)30
Poids-Mouche (Flyweight)    Objectifs: Utiliser le partage pour gérer efficacement un     grand nombre dobjets de faible ...
Poids-Mouche (Flyweight)32
Proxy (Proxy ou Surrogate)    Objectifs: Fournir un intermédiaire entre la partie     cliente et un objet pour contrôler ...
Proxy (Proxy ou Surrogate)34
Design patterns                            Comportementaux     Définissent la communication entre les classes et leurs    ...
11 design patterns Comportementaux(1/2)    Chaîne de responsabilité: Eviter le couplage entre l     émetteur dune requête...
11 design patterns Comportementaux(2/2)    Observateur : Prévenir des objets observateurs,     enregistrés auprès dun obj...
Chaîne de responsabilité (Chain ofresponsibility)    Objectifs: Eviter le couplage entre l émetteur dune     requête et s...
Chaîne de responsabilité (Chain ofresponsibility)39
Commande (Command, Action ouTransaction)    Objectifs:        Encapsuler une requête sous la forme d objet.        Para...
Commande (Command, Action ouTransaction)41
Interpréteur (Interpreter)    Objectifs:        Définir une représentation de la grammaire dun langage.        Utiliser...
Interpréteur (Interpreter)43
Itérateur (Iterator ou Cursor)    Objectifs: Fournir un moyen de parcourir     séquentiellement les éléments dun objet co...
Itérateur (Iterator ou Cursor)45
Médiateur (Mediator)    Objectifs: Gérer la transmission dinformations entre     des objets interagissant entre eux.    ...
Médiateur (Mediator)47
Memento (Memento)    Objectifs: Sauvegarder l état interne dun objet en     respectant l encapsulation, afin de le restau...
Memento (Memento)La partie cliente demande au Createur de stocker son état dans un Memento. Elledemande au Gardien de cons...
Observateur (Observer)    Objectifs: Prévenir des objets observateurs, enregistrés     auprès dun objet observé, dun évén...
Observateur (Observer)La partie cliente indique à lobjet Observe les objets Observateur quil avertira.   51
Etat (State)    Objectifs: Changer le comportement dun objet selon     son état interne.    Quand Utiliser: Un objet a u...
Etat (State)53
Stratégie (Strategy)    Objectifs: Définir une famille d algorithmes     interchangeables, indépendamment de la partie cl...
Stratégie (Strategy)La partie cliente configure un objet ClasseUtilisantStrategie avec un objet Strategie    55et appelle ...
Patron de méthode (Template method)    Objectifs: Définir le squelette dun algorithme en     déléguant certaines étapes à...
Patron de méthode (Template method)La partie cliente appelle la méthode de AbstractClasse qui définit lalgorithme   57
Visiteur (Visitor)    Objectifs: Séparer un algorithme dune structure de     données.    Quand Utiliser: Il est nécessai...
Visiteur (Visitor)La partie cliente appelle les méthodes de réception dun Visiteur des Element.   59
Références    http://rpouiller.developpez.com/tutoriel/java/design-     patterns-gang-of-four/    Erich Gamma, Richard H...
Prochain SlideShare
Chargement dans…5
×

Design patterns

2 238 vues

Publié le

Présentation de 23 des patrons logiciels les plus célèbres.

Publié dans : Technologie
1 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 238
Sur SlideShare
0
Issues des intégrations
0
Intégrations
14
Actions
Partages
0
Téléchargements
115
Commentaires
1
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Design patterns

  1. 1. Design PatternsPrésenté par Eric TOGUEM
  2. 2. Introduction2
  3. 3. Origines Issus des travaux de larchitecte Christopher Alexander (patrons en architecture des bâtiments) 1995: Parution du livre "Design Patterns -- Elements of Reusable Object-Oriented Software",  Gang Of Four (Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides),  Présente 23 Design Patterns 3
  4. 4. Qui suis je?  Eric Joël TOGUEM  CIO à AByster Inc.  Leader de CamerJUG,  Certifications: OCPJP 6, OCEJPAD6,  eric.toguem@abyster.com4
  5. 5. Design Pattern? Description dune solution à un problème de conception "Prouvé » sil a pu être utilisé dans au moins 3 cas Permettent daméliorer la qualité de développement et den diminuer la durée 5
  6. 6. Design Pattern: 3 catégories Créationnels : Définissent des mécanismes pour linstanciation et/ou linitialisation dobjets Structuraux : Organisent les interfaces/classes entre elles Comportementaux : Définissent la communication entre les classes et leurs responsabilités 6
  7. 7. Design pattern créationnels Définissent des mécanismes pour linstanciation et/ou linitialisation dobjets7
  8. 8. 5 design patterns créationnels Fabrique Abstraite: Isole lappartenance à une famille de classes Monteur: Isole les variations de représentations dun objet Fabrique: Isole linstanciation dune classe concrète Prototype: Isole lappartenance à une classe Singleton: Isole lunicité dune instance. 8
  9. 9. Fabrique Abstraite (Abstract factory) Objectif: Fournir une interface pour créer des objets dune même famille sans préciser leurs classes concrètes. Quand Utiliser: Le système utilise des objets qui sont regroupés en famille. Exemple: pour un look and feel donné, tous les graphiques créés doivent être de la même famille Résultat : Isole lappartenance à une famille de classes. 9
  10. 10. Fabrique Abstraite (Abstract factory)10
  11. 11. Monteur (Builder) Objectifs:  Séparer la construction dun objet complexe de sa représentation.  Permettre dobtenir des représentations différentes avec le même procédé de construction. Quand Utiliser: Le système doit instancier des objets complexes, Exemple: Différentes fenêtres d’une IHM, Résultat: Isole les variations de représentations dun objet 11
  12. 12. Monteur (Builder)12
  13. 13. Fabrique (Factory Method) Objectifs: Déléguer linstanciation aux sous-classes. Quand Utiliser: Au niveau d’une classe, on ne connaît pas la classe exacte à instancier, Exemple: Classe réalisant une sauvegarde dans un flux sortant, mais ne sachant pas sil sagit dun fichier ou dune sortie sur le réseau, Résultat: Isole linstanciation dune classe concrète. 13
  14. 14. Fabrique (Factory Method)14
  15. 15. Prototype (Prototype) Objectifs: Créer un nouvel objet à partir d’un prototype. Quand Utiliser: Le système doit créer de nouvelles instances, mais il ignore de quelle classe. Il dispose cependant dinstances de la classe désirée. Exemple: Cas dun logiciel de DAO comportant un copier-coller, Résultat: Isole lappartenance à une classe. 15
  16. 16. Prototype (Prototype)16
  17. 17. Singleton (Singleton) Objectifs  Restreindre le nombre d instances dune classe à une seule.  Fournir une méthode pour accéder à cette instance unique. Quand Utiliser: La classe ne doit avoir quune seule instance. Exemple: Cas dune ressource système, Résultat: Isole lunicité dune instance. 17
  18. 18. Singleton (Singleton)18
  19. 19. Designs pattern structuraux Organisent les interfaces/classes entre elles19
  20. 20. 7 designs pattern structuraux Adaptateur: Convertir linterface dune classe dans une autre interface comprise par la partie cliente Pont: Découpler labstraction dun concept de son implémentation Composite: Permettre à la partie cliente de manipuler un objet unique et un objet composé de la même manière Décorateur: Ajouter dynamiquement des responsabilités à un objet Façade: Fournir une interface unique en remplacement dun ensemble dinterfaces dun sous-système Poids-Mouche: Utiliser le partage pour gérer efficacement un grand nombre dobjets de faible granularité Proxy: Fournir un intermédiaire entre la partie cliente et un objet pour contrôler les accès à ce dernier 20
  21. 21. Adaptateur (Adapter ou Wrapper) Objectifs: Convertir linterface dune classe dans une autre interface comprise par la partie cliente. Quand Utiliser: Le système doit intégrer un sous- système existant. Ce sous-système a une interface non standard par rapport au système. Exemple: Cas d’un driver bas niveau fournit par le fabricant ne correspondant pas à linterface utilisée par le système pour dautres drivers. Résultat: Isole ladaptation dun sous-système. 21
  22. 22. Adaptateur (Adapter ou Wrapper)22
  23. 23. Pont (Bridge ou Handle/Body) Objectifs: Découpler labstraction dun concept de son implémentation. Quand Utiliser: Le système comporte une couche bas niveau réalisant limplémentation et une couche haut niveau réalisant labstraction. Il est nécessaire que chaque couche soit indépendante. Exemple: Système dédition de documents dune application. Pour limplémentation, lédition aboutit à une sortie imprimante, une image sur disque, un document PDF, etc. Pour labstraction, il sagit dédition de factures, de rapports de stock ou de courriers divers. Résultat: Isole le lien entre une couche de haut niveau et celle de bas niveau. 23
  24. 24. Pont (Bridge ou Handle/Body)24
  25. 25. Composite (Composite) Objectifs: Permettre à la partie cliente de manipuler un objet unique et un objet composé de la même manière. Quand Utiliser: Le système comporte une hiérarchie avec un nombre de niveaux non déterminé. Il faut pouvoir considérer un groupe déléments comme un élément unique. Exemple: Logiciel de DAO, plusieurs éléments graphiques peuvent être regroupés en un nouvel élément graphique. Résultat: Isole lappartenance à un agrégat. 25
  26. 26. Composite (Composite)26
  27. 27. Décorateur (Decorator ou Wrapper) Objectifs: Ajouter dynamiquement des responsabilités à un objet. Quand Utiliser: Il est nécessaire de pouvoir étendre les responsabilités dune classe sans avoir recours au sous- classage. Exemple: Cas dune classe gérant des dentrées/sorties à laquelle on souhaite ajouter un buffer et des traces de log. Résultat: Isole les responsabilités dun objet. 27
  28. 28. Décorateur (Decorator ou Wrapper)28
  29. 29. Façade (Facade) Objectifs: Fournir une interface unique en remplacement dun ensemble dinterfaces dun sous-système. Quand Utiliser: Le système comporte un sous-système complexe avec plusieurs interfaces, certaines présentant des opérations pas utiles au reste du système. Exemple: Cas dun sous-système communiquant avec des outils de mesure. Résultat: Isole les fonctionnalités dun sous-système utiles à la partie cliente. 29
  30. 30. Façade (Facade)30
  31. 31. Poids-Mouche (Flyweight) Objectifs: Utiliser le partage pour gérer efficacement un grand nombre dobjets de faible granularité. Quand Utiliser: Un système utilise un grand nombre d instances. Chacune de ces instances a des attributs propre au contexte et propre à lobjet. Exemple: Cas caractéristiques des traits dans un logiciel de DAO. Les caractéristiques dépaisseur, dombre sont intrinsèques, et les coordonnées sont extrinsèques. Résultat: Isole les propriétés partageables des objets. 31
  32. 32. Poids-Mouche (Flyweight)32
  33. 33. Proxy (Proxy ou Surrogate) Objectifs: Fournir un intermédiaire entre la partie cliente et un objet pour contrôler les accès à ce dernier. Quand Utiliser: Les opérations dun objet sont coûteuses en temps ou sont soumises à une gestion de droits daccès. Exemple: Cela peut être un système de chargement dun document (gestion droits d’accès). Résultat: Isole le comportement lors de laccès à un objet. 33
  34. 34. Proxy (Proxy ou Surrogate)34
  35. 35. Design patterns Comportementaux Définissent la communication entre les classes et leurs responsabilités35
  36. 36. 11 design patterns Comportementaux(1/2) Chaîne de responsabilité: Eviter le couplage entre l émetteur dune requête et son récepteur en donnant à plus dun objet une chance de traiter la requête Commande : Paramétrer facilement des requêtes diverses. Interpréteur : Définir une représentation de la grammaire dun langage. Itérateur : Fournir un moyen de parcourir séquentiellement les éléments dun objet composé. Médiateur : Gérer la transmission dinformations entre des objets interagissant entre eux Memento : Sauvegarder l état interne dun objet en respectant l encapsulation, afin de le restaurer plus tard. 36
  37. 37. 11 design patterns Comportementaux(2/2) Observateur : Prévenir des objets observateurs, enregistrés auprès dun objet observé, dun événement Etat : Changer le comportement dun objet selon son état interne. Stratégie : Définir une famille d algorithmes interchangeables, indépendamment de la partie cliente. Patron de méthode : Définir le squelette dun algorithme en déléguant certaines étapes à des sous- classes. Visiteur : Séparer un algorithme dune structure de données. 37
  38. 38. Chaîne de responsabilité (Chain ofresponsibility) Objectifs: Eviter le couplage entre l émetteur dune requête et son récepteur en donnant à plus dun objet une chance de traiter la requête. Quand Utiliser: Le système doit gérer un requête. La requête implique plusieurs objets pour la traiter. Exemple: Cas dun système complexe dhabilitations possédant plusieurs critères afin dautoriser laccès. Ces critères peuvent varier en fonction de la configuration. Résultat: Isole les différentes parties dun traitement. 38
  39. 39. Chaîne de responsabilité (Chain ofresponsibility)39
  40. 40. Commande (Command, Action ouTransaction) Objectifs:  Encapsuler une requête sous la forme d objet.  Paramétrer facilement des requêtes diverses.  Permettre des opérations réversibles Quand Utiliser: Le système doit traiter des requêtes, pouvant provenir de plusieurs émetteurs et pouvant être annulées. Exemple: cas dune IHM avec des boutons de commande, des raccourcis clavier et des choix de menu aboutissant à la même requête. Résultat: Isole une requête. 40
  41. 41. Commande (Command, Action ouTransaction)41
  42. 42. Interpréteur (Interpreter) Objectifs:  Définir une représentation de la grammaire dun langage.  Utiliser cette représentation pour interpréter les éléments de ce langage. Quand Utiliser: Le système doit interpréter un langage. Exemple: Cas dun logiciel embarqué dont la configuration des écrans serait stockée dans des fichiers XML. Résultat: Isole les éléments dun langage. 42
  43. 43. Interpréteur (Interpreter)43
  44. 44. Itérateur (Iterator ou Cursor) Objectifs: Fournir un moyen de parcourir séquentiellement les éléments dun objet composé. Quand Utiliser: Le système doit parcourir les éléments dun objet complexe, Exemple: Cas des classes représentant des listes et des ensembles en Java. Résultat: Isole le parcours dun agrégat. 44
  45. 45. Itérateur (Iterator ou Cursor)45
  46. 46. Médiateur (Mediator) Objectifs: Gérer la transmission dinformations entre des objets interagissant entre eux. Quand Utiliser: Différents objets ont des interactions. Un événement sur lun provoque une (ou des) action(s) sur un (ou d‘)autre(s) objets, Exemple: Cas des éléments dIHM. Si une case est cochée, certains éléments deviennent accessibles. Résultat: Isole la communication entre des objets. 46
  47. 47. Médiateur (Mediator)47
  48. 48. Memento (Memento) Objectifs: Sauvegarder l état interne dun objet en respectant l encapsulation, afin de le restaurer plus tard. Quand Utiliser: Un système doit conserver et restaurer létat dun objet. Létat interne de lobjet à conserver nest pas visible par les autres objets. Exemple: Cas d’un éditeur de document disposant dune fonction dannulation Résultat: Isole la conservation de létat dun objet. 48
  49. 49. Memento (Memento)La partie cliente demande au Createur de stocker son état dans un Memento. Elledemande au Gardien de conserver ce Memento. Elle peut alors demander au Gardien delui fournir un des Memento conservés, ou bien elle demande au Createur de restituer 49son état depuis le Memento.
  50. 50. Observateur (Observer) Objectifs: Prévenir des objets observateurs, enregistrés auprès dun objet observé, dun événement. Quand Utiliser: Un objet doit connaitre les changements d état dun autre objet. Lobjet doit être informé immédiatement. Exemple: Cas dun tableau affichant des statistiques. Si une nouvelle donnée est entrée, les statistiques sont recalculées Résultat: Isole un algorithme traitant un événement. 50
  51. 51. Observateur (Observer)La partie cliente indique à lobjet Observe les objets Observateur quil avertira. 51
  52. 52. Etat (State) Objectifs: Changer le comportement dun objet selon son état interne. Quand Utiliser: Un objet a un fonctionnement différent selon son état interne. Exemple: Cas d’un document informatique. Il a comme fonctions ouvrir, modifier. Le comportement de ces méthodes change selon létat du document Résultat: Isole les algorithmes propres à chaque état dun objet. 52
  53. 53. Etat (State)53
  54. 54. Stratégie (Strategy) Objectifs: Définir une famille d algorithmes interchangeables, indépendamment de la partie cliente. Quand Utiliser: Un objet doit pouvoir faire varier une partie de son algorithme. Exemple: Cas d’un Cela peut être une liste triée. Le tri peut être alphabétique, inverse, les majuscules avant les miniscules, … Résultat: Isole les algorithmes appartenant à une même famille dalgorithmes. 54
  55. 55. Stratégie (Strategy)La partie cliente configure un objet ClasseUtilisantStrategie avec un objet Strategie 55et appelle la méthode de ClasseUtilisantStrategie qui utilise la stratégie.
  56. 56. Patron de méthode (Template method) Objectifs: Définir le squelette dun algorithme en déléguant certaines étapes à des sous-classes. Quand Utiliser: Une classe possède un fonctionnement global. Mais les détails de son algorithme doivent être spécifiques à ses sous-classes. Exemple: Cas dun document informatique qui peut être sauvegardé. Selon le type de document, il ne sera pas sauvegardé de la même manière, … Résultat: Isole les parties variables dun algorithme. 56
  57. 57. Patron de méthode (Template method)La partie cliente appelle la méthode de AbstractClasse qui définit lalgorithme 57
  58. 58. Visiteur (Visitor) Objectifs: Séparer un algorithme dune structure de données. Quand Utiliser: Il est nécessaire de réaliser des opérations, sur les éléments dun objet structuré, qui varient en fonction de la nature de chaque élément et peuvent être de plusieurs types. Exemple: Cas dun logiciel dimages de synthèse. Limage composée de plusieurs objets : sphère, polygone, etc... Sur chaque élément, il faut effectuer plusieurs opérations pour le rendu : ajout des couleurs, effet déclairage, … Résultat: Isole les algorithmes appliquées sur des structures de données 58
  59. 59. Visiteur (Visitor)La partie cliente appelle les méthodes de réception dun Visiteur des Element. 59
  60. 60. Références http://rpouiller.developpez.com/tutoriel/java/design- patterns-gang-of-four/ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (trad. Jean-Marie Lasvergères), Design Patterns - Catalogue de modèles de conceptions réutilisables 60

×