37
LES DESIGN PATTERNS PATTERNS COMPORTEMENTAUX PART1

Design patterns comportementaux

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Design patterns comportementaux

LES DESIGN PATTERNS PATTERNS COMPORTEMENTAUX PART1

Page 2: Design patterns comportementaux

SOMMAIRE

• Définition

PRÉSENTATION PATTERNS COMPORTEMENTAUX

• Strategy

• State

• Visitor

• Iterator

• Observer

LES PATTERNS

• Petit test à chaud :p

QUIZZ

2

Page 3: Design patterns comportementaux

PRÉSENTATION PATTERNS COMPORTEMENTAUX

Page 4: Design 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

Page 5: Design patterns comportementaux

LES PATTERNS

LE PATTERN STRATEGY

Page 6: Design patterns comportementaux

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

Page 7: Design patterns comportementaux

STRATEGY REPRÉSENTATION UML

7

Page 8: Design patterns comportementaux

STRATEGY EXEMPLE UML

8

Page 9: Design patterns comportementaux

STRATEGY

+ Voir code dans IDE

EXEMPLE CODE

9

Page 10: Design patterns comportementaux

LES PATTERNS

LE PATTERN STATE

Page 11: Design patterns comportementaux

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

Page 12: Design patterns comportementaux

STATE REPRÉSENTATION UML

12

Page 13: Design patterns comportementaux

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

Page 14: Design patterns comportementaux

STATE EXEMPLE UML

14

Page 15: Design patterns comportementaux

STATE

+ http://rpouiller.developpez.com/tutoriel/java/design-patterns-gang-of-four/?page=page_4#LVI-H

EXEMPLE CODE

15

Page 16: Design patterns comportementaux

LES PATTERNS

LE PATTERN VISITOR

Page 17: Design patterns comportementaux

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

Page 18: Design patterns comportementaux

VISITOR REPRÉSENTATION UML

18

Page 19: Design patterns comportementaux

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

Page 20: Design patterns comportementaux

VISITOR EXEMPLE UML

20

Page 21: Design patterns comportementaux

VISITOR

+ http://www.programcreek.com/2011/05/visitor-design-pattern-example/

EXEMPLE CODE

21

Page 22: Design patterns comportementaux

LES PATTERNS

LE PATTERN ITERATOR

Page 23: Design patterns comportementaux

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

Page 24: Design patterns comportementaux

ITERATOR REPRÉSENTATION UML

24

Page 25: Design patterns comportementaux

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

Page 26: Design patterns comportementaux

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

Page 27: Design patterns comportementaux

LES PATTERNS

LE PATTERN OBSERVER

Page 28: Design patterns comportementaux

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

Page 29: Design patterns comportementaux

OBSERVER REPRÉSENTATION UML

29

Page 30: Design patterns comportementaux

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

Page 32: Design patterns comportementaux

QUIZZ

Page 33: Design patterns comportementaux

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:

Page 34: Design patterns comportementaux

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:

Page 35: Design patterns comportementaux

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:

Page 36: Design patterns comportementaux

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 ?

Page 37: Design patterns comportementaux

LES DESIGN PATTERNS – PART1 QUESTIONS / REPONSES

37