Design patterns comportementaux

399 vues

Publié le

Un workshop sur les Design Patterns Comportementaux. 5 patterns avec leur définition et leurs diagrammes UML.

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

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

Aucune remarque pour cette diapositive

Design patterns comportementaux

  1. 1. LES DESIGN PATTERNS PATTERNS COMPORTEMENTAUX PART1
  2. 2. SOMMAIRE PRÉSENTATION PATTERNS COMPORTEMENTAUX • Définition LES PATTERNS • • • • • Strategy State Visitor Iterator Observer QUIZZ • Petit test à chaud :p 2
  3. 3. PRÉSENTATION PATTERNS COMPORTEMENTAUX
  4. 4. PRÉSENTATION PATTERNS COMPORTEMENTAUX DÉFINITION + LES TROIS FAMILLES (SUIVANT LES DÉCOUPAGES…)    CONSTRUCTION STRUCTURE COMPORTEMENT + OBJECTIF  FOURNIR DES SOLUTIONS POUR DISTRIBUER LES TRAITEMENTS ET LES ALGORITHMES ENTRE LES OBJETS + MOYENS  DISTRIBUTION PAR DÉLÉGATION OU HÉRITAGE 4
  5. 5. LES PATTERNS LE PATTERN STRATEGY
  6. 6. STRATEGY VUE GLOBALE PROBLÈME • Un objet doit effectuer plusieurs traitements différents, dépendant d’une variable ou d’un état DESCRIPTION • Vous avez une classe dédiée à une tâche spécifique. Dans un premier temps, celle-ci effectue une opération suivant un algorithme bien précis. Cependant, avec le temps, cette classe sera amenée à évoluer, et elle suivra plusieurs algorithmes, tout en effectuant la même tâche de base. • Ex: format(), excecute(),… SOLUTION • Délégation du traitement à une classe externe et création d’une famille d’algorithme 6
  7. 7. STRATEGY REPRÉSENTATION UML 7
  8. 8. STRATEGY EXEMPLE UML 8
  9. 9. STRATEGY EXEMPLE CODE + Voir code dans IDE 9
  10. 10. LES PATTERNS LE PATTERN STATE
  11. 11. STATE VUE GLOBALE PROBLÈME • Le comportement d’un objet est susceptible de changer en fonction de son état (on ne peut pas clôturer un compte qui n’est pas ouvert…) DESCRIPTION • Le pattern State permet à un objet d’adapter son comportement en fonction de son état interne • L’idée se représente bien par les diagrammes d’état UML SOLUTION • On délègue à des classes « état » le fait d’implémenter les différent comportement de l’objet 11
  12. 12. STATE REPRÉSENTATION UML 12
  13. 13. STATE LES CLASSES StateMachine • Classe concrète décrivant des objets qui sont des machines à états. Cette classe maintient une référence sur l’interface State. State • Interface à implémenter regroupant les comportements qui sont dépendants de l’état de l’objet ConcreteState • Les classes qui implémentent State et définissent les divers comportements 13
  14. 14. STATE EXEMPLE UML 14
  15. 15. STATE EXEMPLE CODE + http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-offour/?page=page_4#LVI-H 15
  16. 16. LES PATTERNS LE PATTERN VISITOR
  17. 17. VISITOR VUE GLOBALE PROBLÈME • Vous voulez laissez la possibilité d’étendre le comportement de votre objet sans pour autant en modifier le code DESCRIPTION • le but est de laisser l’opportunité à des classes Visiteur d’accéder à l’instance de l’objet visiter pour modifier son comportement. • C’est un design qui est souvent associé au design pattern Composite SOLUTION • Tous les objets qui acceptent que leur comportement soit étendu propose une méthode accessible au visiteur. 17
  18. 18. VISITOR REPRÉSENTATION UML 18
  19. 19. VISITOR LES CLASSES Visitor • définit l'interface d'une visiteur. Elle déclare les méthodes de visite des sous-classes concrètes de Element. ConcreteVisitor • sont des sous-classes concrètes de l'interface Visiteur. Elles implémentent des comportements de visite des Element. Element • définit l'interface d'une élément. Elle déclare la méthode de réception d'un objet Visiteur ConcreteElement • sont des sous-classes concrètes de l'interface Element. Elles implémentent la méthode de réception. Elles possèdent des données/attributs et méthodes différents. 19
  20. 20. VISITOR EXEMPLE UML 20
  21. 21. VISITOR EXEMPLE CODE + http://www.programcreek.com/2011/05/visitor-design-pattern-example/ 21
  22. 22. LES PATTERNS LE PATTERN ITERATOR
  23. 23. ITERATOR VUE GLOBALE PROBLÈME • Parcourir séquentiellement les éléments d'un objet composé. DESCRIPTION • Le système doit parcourir les éléments d'un objet complexe. La classe de l'objet complexe peut varier. • Cela est le cas des classes représentant des listes et des ensembles en Java. Elles ont une méthode retournant un itérateur, qui permet de parcourir les éléments. SOLUTION • Le Design Pattern permet d'isoler le parcours d'un agrégat dans une classe Iterator 23
  24. 24. ITERATOR REPRÉSENTATION UML 24
  25. 25. ITERATOR LES CLASSES Compose • définit l'interface d'un objet composé permettant de créer un Iterateur. ConcreteCompose • est une sous-classe de l'interface Compose. Elle est composée d'éléments et implémente la méthode de création d'un Iterateur. Iterateur • définit l'interface de l'itérateur, qui permet d'accéder aux éléments de l'objet Compose. ConcreteIterateur • est une sous-classe de l'inteface Iterateur. Elle fournit une implémentation permettant de parcourir les éléments de ConcreteCompose. Elle conserve la trace de la position courante. 25
  26. 26. ITERATOR EXEMPLE CODE + http://www.avajava.com/tutorials/lessons/iterator-pattern.html + http://blog.zenika.com/index.php?post/2010/10/31/Au-coeur-du-JDK-%3A-linterface-Iterable 26
  27. 27. LES PATTERNS LE PATTERN OBSERVER
  28. 28. OBSERVER VUE GLOBALE PROBLÈME • Des objets dépendent de l’état d’un autre objet et veulent être notifié d’un changement d’état de ce dernier DESCRIPTION • Le pattern Obserever a pour objectif de construire une dépendance entre un sujet et des observateurs de sorte que chaque modification du sujet soit notifiée aux observateurs afin qu’il puissent mettre à jour leur état. • Ex: Listener Swing,… SOLUTION • Ajouter une méthode update à tous les Observer et gérer une liste d’Observer au niveau du Sujet 28
  29. 29. OBSERVER REPRÉSENTATION UML 29
  30. 30. OBSERVER LES CLASSES Subject • Classe abstraite qui introduit l’association avec les Observers Observer • Interface à implémenter pour recevoir des notifications ConcreteSubject • Classe d’implémentation d’un Subject. C’est lui qui envoie une notif quand son état est modifié ConcreteObserver • Maintient une référence vers le subject et implémente la méthode update(). Elle peut aussi demandé des infos au Subject sur son état. 30
  31. 31. OBSERVER EXEMPLE + http://javapostsforlearning.blogspot.in/2013/02/observer-design-pattern-injava.html + Petit exemple Swing sur IDE 31
  32. 32. QUIZZ
  33. 33. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern Iterator: 1. Iterator 2. ConcreteIterator 3. Aggregate 4. Invoker © SQLI GROUP 33
  34. 34. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern Observer: 1. Observer 2. Subject 3. ConcreteSubject 4. Observed © SQLI GROUP 34
  35. 35. QUIZZ TEST À CHAUD  Q: Quel Objet ne fait pas partie du Design Pattern State: 1. ConcretStrategyA 2. Subject 3. ConcretStrategyB 4. Strategy © SQLI GROUP 35
  36. 36. QUIZZ TEST À CHAUD  Q: Quel est le Design Pattern qui défini une famille d’algorithme, les encapsule et rend chacun interchangeables. Permettant à l’algo de changer indépendamment du client qui l’utilise ? 1. State 2. Strategy 3. Observer 4. Visitor © SQLI GROUP 36
  37. 37. LES DESIGN PATTERNS – PART1 QUESTIONS / REPONSES 37

×