Académique Documents
Professionnel Documents
Culture Documents
Design Pattern
• Objectifs
Design Pattern
A. Beugnard 1 1999
Les design patterns
Ce que c ’est
• Une brique
– Un pattern dépend de son environnement
• Une règle
– Un pattern ne peut pas s ’appliquer mécaniquement
• Une méthode
– Ne guide pas une prise de décision ; un pattern est la
décision prise
• Nouveau
– Lao-Tzu (-550) travaillait déjà sur les patterns...
A. Beugnard 2 1999
Les design patterns
Avantages
• Un vocabulaire commun
• Capitalisation de l ’expérience
Inconvénients
• Apprentissage, expérience
• Nombreux…
– lesquels sont identiques ?
– De niveaux différents … des patterns s ’appuient sur
d ’autres...
A. Beugnard 3 1999
Les design patterns
Exemple
• Nom Salle d ’attente
• Problème On doit attendre
A. Beugnard 4 1999
Les design patterns
Forme et langage
Interactions Formes-langages
A. Beugnard 5 1999
Les design patterns
Classification
Créateurs Structuraux Comportementaux
A. Beugnard 6 1999
Les design patterns
• Créational Patterns
• Structural Patterns
• Behavioural Patterns
A. Beugnard 7 1999
Les design patterns
Remarque
MAIS
Creational Patterns
Formes de création :
• Abstraire le processus d'instanciation.
• Rendre indépendant de la façon dont les objets sont
créés, composés, assemblés, représentés.
• Encapsuler la connaissance de la classe concrète qui
instancie.
• Cacher ce qui est créé, qui crée, comment et quand.
A. Beugnard 8 1999
Les design patterns
Principes
Utilisation
A. Beugnard 9 1999
Les design patterns
Abstract Factory
Client
WidgetFactory
createWindow Window
createScrollBar
Factory
MacWindow MotifWindow
MotifWidgetFactory MacWidgetFactory
MacScrollBar MotifScrollBar
Utilisation
A. Beugnard 10 1999
Les design patterns
Builder
Builder Director
structure
buildPart construct
Product
Utilisation
A. Beugnard 11 1999
Les design patterns
FactoryMethod
Creator
Product factoryMethod produit := factoryMethod
UneOperation
ConcreteCreator
ConcreteProduct return new ConcreteProduct
factoryMethod
Utilisation
A. Beugnard 12 1999
Les design patterns
Prototype
Prototype
Client clone
Operation
o = prototype.clone
ConcretePrototype1 ConcretePrototype2
clone clone
Utilisation
A. Beugnard 13 1999
Les design patterns
Singleton
Singleton
return soleInstance
static Instance
...
Structural Patterns
Formes de structure :
A. Beugnard 14 1999
Les design patterns
Principes
Utilisation Adaptation
conception
A. Beugnard 15 1999
Les design patterns
Adapter
Version héritage multiple
Request methodeSpec.
Adapter
Request methodSpec()
Adapter
Version composition
Request methodeSpec.
adapté
Adapter
Request adapté.methodSpec()
A. Beugnard 16 1999
Les design patterns
Utilisation Conception
nouvelle
Bridge
imp
Client Abstraction Implementor
Operation OperImpl1
imp.operImpl()
RefinedAbstraction ConcreteImplA
OperImpl1
A. Beugnard 17 1999
Les design patterns
Utilisation
Composite
Component
Operation
add
Feuille Composite
Operation
add
A. Beugnard 18 1999
Les design patterns
Utilisation
Decorator
Component
Operation
comp
ConcreteComponent Decorator
Operation comp.Operation()
DecoratorB DecoratorA
super.Operation()
addedBehavior()
Operation
addedBehavior
A. Beugnard 19 1999
Les design patterns
Utilisation
Facade
FACADE
A. Beugnard 20 1999
Les design patterns
Utilisation
Flyweight
FWFactory Flyweight
get(key) Operation
si FW(key) existe
retourne FW
sinon SharedFW UnsharedFW
creer un new FW
le retourne Operation Operation
Client
A. Beugnard 21 1999
Les design patterns
Utilisation
Proxy
Client Subject
Operation
realSubject
RealSubject Proxy
Operation Operation
realSubject.Operation
A. Beugnard 22 1999
Les design patterns
Behavioural Patterns
• des algorithmes
• des comportements entre objets
• des formes de communication entre objet
Principes
• Chain of Responsibility
• Command
• Interpreter
• Iterator
• Mediator
• Memento
• Observer
• State
• Strategy
• Template Method
• Visitor
© A. Beugnard ENST Bretagne
A. Beugnard 23 1999
Les design patterns
Utilisation
Chain of Responsibility
successor
Client Handler
Operation
Handler1 Handler2
Operation Operation
A. Beugnard 24 1999
Les design patterns
Utilisation
Command
Invoker Command
Execute
Client
Receiver. ConcreteCommand
receiver
Action Execute
A. Beugnard 25 1999
Les design patterns
Utilisation
Interpreter
Client Expression
Interpret
Context
TerminalExpres. NonTerminalExpr.
Interpret Interpret
A. Beugnard 26 1999
Les design patterns
Utilisation
Iterator
Iterator
Aggregate Client
first
createIterator next
done
current
ConcreteAggregate
ConcreteIterator
A. Beugnard 27 1999
Les design patterns
Utilisation
Mediator
Mediator Colleague
mediator
A. Beugnard 28 1999
Les design patterns
Utilisation
Memento
A. Beugnard 29 1999
Les design patterns
Utilisation
Observer
observers
Subject Observer
Attach Update
Detach
Notify forall observers
o.update
subject
ConcreteSubject ConcreteObserver
Update
subject.action
A. Beugnard 30 1999
Les design patterns
Utilisation
State
Context state
State
Request Handle
state.handle
ConcreteStateA ConcreteStateB
Handle Handle
A. Beugnard 31 1999
Les design patterns
Utilisation
Strategy
Context strategy
Strategy
Request interfaceAlgo
ConcreteStrategyA ConcreteStrategyB
interfaceAlgo interfaceAlgo
A. Beugnard 32 1999
Les design patterns
Utilisation
On utilise TemplateMethod :
Template Method
AbstractClass
Template …
operation1 operation1
operation2 …
operation2
…
ConcreteClass
Template
operation1
operation2
A. Beugnard 33 1999
Les design patterns
Utilisation
Visitor
Vistor
visitConcretElementA()
Element
accept(Visitor)
ConcreteVisitorA ConcreteVisitorB
visitConcretElementA() visitConcretElementA()
ConcreteElementA ConcreteElementB
v.visitConcretElementA(this)
accept(Visitor v) accept(Visitor v)
A. Beugnard 34 1999
Les design patterns
A. Beugnard 35 1999
Les design patterns
• Facade
• Flyweight
• Abstract Factory
• Builder
A. Beugnard 36 1999
Les design patterns
Différence type-classe…
• Chain of Responsibility ; même interface, mais
implantations différentes
• Composite ; les Components ont une même interface
dont l'implantation est en partie partagée dans le
Composite
• Command, Observer, State, Strategy ne sont souvent
que des interfaces abstraites
• Prototype, Singleton, Factory, Builder sont des
abstractions pour créer des objets qui permettent de
penser en termes d'interfaces et de leur associer
différentes implantations
© A. Beugnard ENST Bretagne
Mieux réutiliser
• héritage vs composition
– white-box reuse ; rompt l'encapsulation - stricte ou non
– black-box reuse ; flexible, dynamique
• délégation (redirection)
– Une forme de composition...qui remplace l'héritage
– Bridge découple l'interface de l'implantation
– Mediator, Visitor, Proxy
A. Beugnard 37 1999
Les design patterns
Compiled-Time vs Run-Time
Structures
• Aggrégation
composition, is-part-of
dépendence, durée de vie liée, responsabilité
plus stable ~ compiled-time, statique
• Connaissance (accointance)
lien, association
relation fugitive, utilisation ponctuelle
dynamique, run-time
A. Beugnard 38 1999
Les design patterns
A. Beugnard 39 1999
Les design patterns
Autres patterns
Architecture :
• Couche : systèmes en couches (OS, piles OSI)
proche de Facade
Algorithmique distribué :
• Jeton circulant
• Vague de calculs diffusant
Conclusion
• Architecture de logiciel
A. Beugnard 40 1999