Post on 22-Jun-2015
description
LES DESIGN PATTERNS PATTERNS COMPORTEMENTAUX PART1
SOMMAIRE
• Définition
PRÉSENTATION PATTERNS COMPORTEMENTAUX
• Strategy
• State
• Visitor
• Iterator
• Observer
LES PATTERNS
• Petit test à chaud :p
QUIZZ
2
PRÉSENTATION PATTERNS COMPORTEMENTAUX
PRÉSENTATION PATTERNS COMPORTEMENTAUX
+ 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
DÉFINITION
4
LES PATTERNS
LE PATTERN STRATEGY
STRATEGY
• Un objet doit effectuer plusieurs traitements différents, dépendant d’une variable ou d’un état
PROBLÈME
• 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(),…
DESCRIPTION
• Délégation du traitement à une classe externe et création d’une famille d’algorithme
SOLUTION
VUE GLOBALE
6
STRATEGY REPRÉSENTATION UML
7
STRATEGY EXEMPLE UML
8
STRATEGY
+ Voir code dans IDE
EXEMPLE CODE
9
LES PATTERNS
LE PATTERN STATE
STATE
• 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…)
PROBLÈME
• 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
DESCRIPTION
• On délègue à des classes « état » le fait d’implémenter les différent comportement de l’objet
SOLUTION
VUE GLOBALE
11
STATE REPRÉSENTATION UML
12
STATE
• Classe concrète décrivant des objets qui sont des machines à états. Cette classe maintient une référence sur l’interface State.
StateMachine
• Interface à implémenter regroupant les comportements qui sont dépendants de l’état de l’objet
State
• Les classes qui implémentent State et définissent les divers comportements
ConcreteState
LES CLASSES
13
STATE EXEMPLE UML
14
STATE
+ http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-of-four/?page=page_4#LVI-H
EXEMPLE CODE
15
LES PATTERNS
LE PATTERN VISITOR
VISITOR
• Vous voulez laissez la possibilité d’étendre le comportement de votre objet sans pour autant en modifier le code
PROBLÈME
• 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
DESCRIPTION
• Tous les objets qui acceptent que leur comportement soit étendu propose une méthode accessible au visiteur.
SOLUTION
VUE GLOBALE
17
VISITOR REPRÉSENTATION UML
18
VISITOR
• définit l'interface d'une visiteur. Elle déclare les méthodes de visite des sous-classes concrètes de Element.
Visitor
• sont des sous-classes concrètes de l'interface Visiteur. Elles implémentent des comportements de visite des Element.
ConcreteVisitor
• définit l'interface d'une élément. Elle déclare la méthode de réception d'un objet Visiteur
Element
• 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.
ConcreteElement
LES CLASSES
19
VISITOR EXEMPLE UML
20
VISITOR
+ http://www.programcreek.com/2011/05/visitor-design-pattern-example/
EXEMPLE CODE
21
LES PATTERNS
LE PATTERN ITERATOR
ITERATOR
• Parcourir séquentiellement les éléments d'un objet composé.
PROBLÈME
• 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.
DESCRIPTION
• Le Design Pattern permet d'isoler le parcours d'un agrégat dans une classe Iterator
SOLUTION
VUE GLOBALE
23
ITERATOR REPRÉSENTATION UML
24
ITERATOR
• définit l'interface d'un objet composé permettant de créer un Iterateur.
Compose
• 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.
ConcreteCompose
• définit l'interface de l'itérateur, qui permet d'accéder aux éléments de l'objet Compose.
Iterateur
• 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.
ConcreteIterateur
LES CLASSES
25
ITERATOR
+ http://www.avajava.com/tutorials/lessons/iterator-pattern.html
+ http://blog.zenika.com/index.php?post/2010/10/31/Au-coeur-du-JDK-%3A-l-interface-Iterable
EXEMPLE CODE
26
LES PATTERNS
LE PATTERN OBSERVER
OBSERVER
• Des objets dépendent de l’état d’un autre objet et veulent être notifié d’un changement d’état de ce dernier
PROBLÈME
• 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,…
DESCRIPTION
• Ajouter une méthode update à tous les Observer et gérer une liste d’Observer au niveau du Sujet
SOLUTION
VUE GLOBALE
28
OBSERVER REPRÉSENTATION UML
29
OBSERVER
• Classe abstraite qui introduit l’association avec les Observers
Subject
• Interface à implémenter pour recevoir des notifications
Observer
• Classe d’implémentation d’un Subject. C’est lui qui envoie une notif quand son état est modifié
ConcreteSubject
• 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.
ConcreteObserver
LES CLASSES
30
OBSERVER
+ http://javapostsforlearning.blogspot.in/2013/02/observer-design-pattern-in-java.html
+ Petit exemple Swing sur IDE
EXEMPLE
31
QUIZZ
QUIZZ TEST À CHAUD
33 © SQLI GROUP
1. Iterator
2. ConcreteIterator
3. Aggregate
4. Invoker
Q: Quel Objet ne fait pas partie du Design Pattern
Iterator:
QUIZZ TEST À CHAUD
34 © SQLI GROUP
1. Observer
2. Subject
3. ConcreteSubject
4. Observed
Q: Quel Objet ne fait pas partie du Design Pattern
Observer:
QUIZZ TEST À CHAUD
35 © SQLI GROUP
1. ConcretStrategyA
2. Subject
3. ConcretStrategyB
4. Strategy
Q: Quel Objet ne fait pas partie du Design Pattern
State:
QUIZZ TEST À CHAUD
36 © SQLI GROUP
1. State
2. Strategy
3. Observer
4. Visitor
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 ?
LES DESIGN PATTERNS – PART1 QUESTIONS / REPONSES
37