8/6/2019 DesignPattern Desc + Exemple
1/40
1
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
1Les design patterns
Design Pattern
Objectifs
Comprendre les bases de la philosophie des formes deconception
Connatre le vocabulaire spcifique
Connatre quelques patterns
Concevoir objet diffremment
A. Beugnard ENST Bretagne
2Les design patterns
Design Pattern
En architecture (Christopher Alexander) Description d'un problme rmanent et de sa
solution Solution pouvant tre utilise des millions de fois
sans tre deux fois identique
Forme de conception, pattern, modle, patron deconception
Mur, porte, fentre objet, interface, classe
Il existe aussi des anti-patterns
8/6/2019 DesignPattern Desc + Exemple
2/40
2
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
3Les design patterns
Ce que c est
Description d une solution classique un problmercurent
Dcrit une partie de la solution Avec des relations avec le systme et les autres
parties...
C est une technique d architecture logicielle
A. Beugnard ENST Bretagne
4Les design patterns
Ce que ce n est pas
Une brique Un pattern dpend de son environnement
Une rgle Un pattern ne peut pas s appliquer mcaniquement
Une mthode Ne guide pas une prise de dcision ; un pattern est la
dcision prise
Nouveau Lao-Tzu (-550) travaillait dj sur les patterns...
Computer scientists think they have discovered the world Anonymous
8/6/2019 DesignPattern Desc + Exemple
3/40
3
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
5Les design patterns
Avantages
Un vocabulaire commun Capitalisation de l exprience
Un niveau d abstraction plus lev qui permetd laborer des constructions logicielles de meilleurequalit
Rduire la complexit Guide/catalogue de solutions
A. Beugnard ENST Bretagne
6Les design patterns
Inconvnients
Effort de synthse ; reconnatre, abstraire
Apprentissage, exprience
Les patterns se dissolvent en tant utiliss
Nombreux lesquels sont identiques ? De niveaux diffrents des patterns s appuient sur
d autres...
8/6/2019 DesignPattern Desc + Exemple
4/40
4
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
7Les design patterns
Description dune forme : langage de pattern nom : augmente le vocabulaire, rifie une ide de
solution, permet de mieux communiquer.
problme : quand appliquer la forme, le contexte...
solution : les lments de la solution, leurs relations,
responsabilits, collaborations. Pas de manireprcise, mais suggestives...
consquences : rsultats et compromis issus del'application de la forme
A. Beugnard ENST Bretagne
8Les design patterns
Exemple
Nom Problme
Solution
Consquences
Exemples
Salle d attenteOn doit attendre
Toujours relaxante et pas confine
Attente active ou passive ? Dure del attente ? Distraction ?
Aroport, dentiste, ...
8/6/2019 DesignPattern Desc + Exemple
5/40
5
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
9Les design patterns
Forme et langage
Une forme est indpendante du langage
(plutt orient-objet, mais pas exclusivement, cf.Patterns dans Minix)
Mais certaines constructions syntaxiques ouproprits du langage rendent inutile ou "naturelle"l'utilisation de telle ou telle forme
(ex : multi-methode simplifie les visiteurs)
A. Beugnard ENST Bretagne
10Les design patterns
Interactions Formes-langages
Influence des langages sur les Patterns des langages implantent des formes de bas niveau quelques formes utilisent des concepts spcifiques un
langage
quelques formes ne sont pas indpendantes des langages certains langages forcent tordre des formes compliques
lors de l implantation
Influence des Patterns sur les langages Les Formes capitalisent l tat de rflexion courant sur les
pratiques de programmation.
8/6/2019 DesignPattern Desc + Exemple
6/40
6
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
11Les design patterns
Gamma, Helm, Johnson, Vlissides "Design Patterns"
Nom et classification Implantation Intention Exemple de code Autres noms connus Usages connus Motivation (scnario) Formes associes Applicabilit
Structure (OMT) Participants (classes) Collaborations Consquences
La BIBLE
Gang4
A. Beugnard ENST Bretagne
12Les design patterns
Classification
Crateurs Structuraux Comportementaux
Class Factory Method Adapter(class) InterpreterTemplate Method
Object Abstract Factory Adapter(objet) Chain of Respons.Builder Bridge CommandPrototype Composite IteratorSingleton Decorator Mediator
Facade MementoFlyweight ObserverProxy State
StrategyVisitor
8/6/2019 DesignPattern Desc + Exemple
7/40
7
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
13Les design patterns
Application des formes lors de la conception Trouver les bons objets Bien choisir la granularit des objets Spcifier les interfaces des objets Spcifier l'implantation des objets Mieux rutiliser
hritage vs composition dlgation
Compiled-Time vs Run-Time Structures Concevoir pour l'volution
A. Beugnard ENST Bretagne
14Les design patterns
Mais dabord, le catalogue !
Crational Patterns
Structural Patterns
Behavioural Patterns
8/6/2019 DesignPattern Desc + Exemple
8/40
8
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
15Les design patterns
Remarque
La rfrence "Design Patterns" dcrit les formes pardes diagrammes OMT... Comme dans la suite
MAIS
L'hritage et les objets ne sont pas ncessaires
A. Beugnard ENST Bretagne
16Les design patterns
Creational Patterns
Formes de cration : Abstraire le processus d'instanciation. Rendre indpendant de la faon dont les objets sont
crs, composs, assembls, reprsents. Encapsuler la connaissance de la classe concrte quiinstancie.
Cacher ce qui est cr, qui cre, comment et quand.
8/6/2019 DesignPattern Desc + Exemple
9/40
9
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
17Les design patterns
Principes
AbstractFactory ; on passe un paramtre la crationqui dfinit ce qu'on va crer
Builder ; on passe en paramtre un objet qui saitconstruire l'objet partir d'une description
FactoryMethod ; la classe sollicit appelle desmthode abstraites ...il suffit de sous-classer
Prototype ; des prototypes varis existent qui sontcopis et assembls Singleton ; unique instance
A. Beugnard ENST Bretagne
18Les design patterns
Utilisation
On utilise l'AbstractFactory lorsque : un systme doit tre indpendant de la faon dont
ses produits sont crs, assembls, reprsents un systme repose sur un produit d'une famille de
produits une famille de produits doivent tre utiliss ensemble,
pour renforcer cette contrainte on veut dfinir une interface unique une famille de
produits concrets
8/6/2019 DesignPattern Desc + Exemple
10/40
10
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
19Les design patterns
Abstract Factory
WidgetFactory
createWindowcreateScrollBar
MotifWidgetFactory
createWindowcreateScrollBar
MacWidgetFactory
createWindowcreateScrollBar
Window
MacWindow MotifWindow
ScrollBar
MacScrollBar MotifScrollBar
Client
Products
Factory
A. Beugnard ENST Bretagne
20Les design patterns
Utilisation
On utilise le Builder lorsque : l'algorithme pour crer un objet doit tre indpendant
des parties qui le compose et de la faon de lesassembler
le processus de construction permet diffrentesreprsentations de l'objet construit
8/6/2019 DesignPattern Desc + Exemple
11/40
11
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
21Les design patterns
Builder
Builder
buildPart
ConcreteBuilder
buildPartgetResult
Director
construct
forall objects in structure {
builder -> BuildPart()}
Product
structure
A. Beugnard ENST Bretagne
22Les design patterns
Utilisation
On utilise le FactoryMethod lorsque : une classe ne peut anticiper la classe de l'objet
qu'elle doit construire une classe dlgue la responsabilit de la cration
ses sous-classes, tout en concentrant l'interface dansune classe unique
8/6/2019 DesignPattern Desc + Exemple
12/40
12
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
23Les design patterns
FactoryMethod
Product
ConcreteProduct
Creator
factoryMethod UneOperation
ConcreteCreator
factoryMethod
produit := factoryMethod
return new ConcreteProduct
A. Beugnard ENST Bretagne
24Les design patterns
Utilisation
On utilise le Prototype lorsque : un systme doit tre indpendant de la faon dont
ses produits sont crs, assembls, reprsents quand la classe n'est connue qu' l'excution pour viter une hirarchie de Factory parallle une
hirarchie de produits
8/6/2019 DesignPattern Desc + Exemple
13/40
13
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
25Les design patterns
Prototype
Client
Operation
Prototype
clone
ConcretePrototype1
clone
return a copy of self
ConcretePrototype2
clone
return a copy of self
o = prototype.clone
A. Beugnard ENST Bretagne
26Les design patterns
Utilisation
On utilise le Singleton lorsque : il n'y a qu'une unique instance d'une classe et qu'elle
doit tre accessible de manire connue une instance unique peut tre sous-classe et que
les clients peuvent rfrencer cette extension sansavoir modifier leur code
8/6/2019 DesignPattern Desc + Exemple
14/40
14
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
27Les design patterns
Singleton
Singleton
static Instance...
return soleInstance
A. Beugnard ENST Bretagne
28Les design patterns
Structural Patterns
Formes de structure :
Comment les objets sont assembls
Les patterns sont complmentaires les uns desautres
8/6/2019 DesignPattern Desc + Exemple
15/40
15
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
29Les design patterns
Principes
Adapter ; rendre un objet conformant un autre Bridge ; pour lier une abstraction une implantation Composite ; bas sur des objets primitifs et
composants Decorator ; ajoute des services un objet Facade ; cache une structure complexe Flyweight ; petits objets destins tre partags Proxy ; un objet en masque un autre
A. Beugnard ENST Bretagne
30Les design patterns
Utilisation
On utilise l'Adapter lorsque on veut utiliser :
une classe existante dont l'interface ne convient pas plusieurs sous-classes mais il est est coteux de
redfinir l'interface de chaque sous-classe en lessous-classant. Un adapter peut adapter l'interface auniveau du parent.
Adaptationconception
8/6/2019 DesignPattern Desc + Exemple
16/40
16
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
31Les design patterns
Adapter
Client Cible
Request
Adapter
Request methodSpec()
Version hritage multiple
Adapt
methodeSpec.
A. Beugnard ENST Bretagne
32Les design patterns
Adapter
Client Cible
Request
Adapter
Request adapt.methodSpec()
Version composition
Adapt
methodeSpec.
adapt
8/6/2019 DesignPattern Desc + Exemple
17/40
17
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
33Les design patterns
Utilisation
On utilise Bridge lorsque : on veut viter un lien permanent entre l'abstraction et
l'implantation (ex: l'implantation est choisie l'excution)
l'abstraction et l'implantation sont toutes les deuxsusceptibles d'tre raffines
les modifications subies par l'implantation oul'abstraction ne doivent pas avoir d'impacts sur leclient (pas de recompilation)
Conceptionnouvelle
A. Beugnard ENST Bretagne
34Les design patterns
Bridge
Client Abstraction
Operation
RefinedAbstraction
Implementor
OperImpl1
ConcreteImplA
OperImpl1
imp.operImpl()
imp
8/6/2019 DesignPattern Desc + Exemple
18/40
18
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
35Les design patterns
Utilisation
On utilise Composite lorsque on veut :
reprsenter une hirarchie d'objets ignorer la diffrence entre un composant simple et un
composant en contenant d'autres. (interfaceuniforme)
A. Beugnard ENST Bretagne
36Les design patterns
Composite
Component
Operationadd
Feuille Composite
Operationadd
8/6/2019 DesignPattern Desc + Exemple
19/40
19
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
37Les design patterns
Utilisation
On utilise Decorator lorsque :
il faut ajouter des responsabilits dynamiquement etde manire transparente
il existe des responsabilits dont on peut se passer des extensions sont indpendantes et qu'il serait
impraticable d'implanter par sous-classage
A. Beugnard ENST Bretagne
38Les design patterns
Decorator Component
Operation
ConcreteComponent Decorator
Operation
DecoratorA
OperationaddedBehavior
DecoratorB
comp.Operation()
comp
super.Operation()addedBehavior()
8/6/2019 DesignPattern Desc + Exemple
20/40
20
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
39Les design patterns
Utilisation
On utilise Facade lorsque on veut :
fournir une interface simple un systme complexe introduire une interface pour dcoupler les relations
entre deux systmes complexes construire le systme en couche
A. Beugnard ENST Bretagne
40Les design patterns
Facade
FACADE
8/6/2019 DesignPattern Desc + Exemple
21/40
21
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
41Les design patterns
Utilisation
On utilise Flyweight lorsque : on utilise beaucoup d'objets, et les cots de sauvegarde sont levs, et l'tat des objets peut tre externalis (extrinsic), et de nombreux groupes d'objets peuvent tre
remplacs par quelques objets partags un fois queles tats sont externaliss, et
l'application ne dpend pas de l'identit des objets
A. Beugnard ENST Bretagne
42Les design patterns
Flyweight
FWFactory
get(key)
Flyweight
Operation
UnsharedFW
Operation
si FW(key) existeretourne FW
sinoncreer un new FWle retourne
Client
SharedFW
Operation
8/6/2019 DesignPattern Desc + Exemple
22/40
22
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
43Les design patterns
Utilisation
On utilise le Proxy lorsqu'on veut rfrencer un objetpar un moyen plus complexe qu'un pointeur...
remote proxy : ambassadeur protection proxy : contrle d'accs rfrence intelligente
persistence
comptage de rfrence
A. Beugnard ENST Bretagne
44Les design patterns
Proxy
Subject
Operation
Proxy
Operation
realSubject.Operation
Client
RealSubject
Operation
realSubject
8/6/2019 DesignPattern Desc + Exemple
23/40
23
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
45Les design patterns
Behavioural Patterns
Formes de comportement pour dcrire :
des algorithmes des comportements entre objets des formes de communication entre objet
A. Beugnard ENST Bretagne
46Les design patterns
Principes Chain of Responsibility Command Interpreter Iterator
Mediator Memento Observer State Strategy Template Method Visitor
8/6/2019 DesignPattern Desc + Exemple
24/40
24
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
47Les design patterns
Utilisation
On utilise Chain of Responsibility lorsque :
plus d'un objet peut traiter une requte, et il n'est pasconnu a priori
l'ensemble des objets pouvant traiter une requte est
construit dynamiquement
A. Beugnard ENST Bretagne
48Les design patterns
Chain of Responsibility
Handler
Operation
Handler2
Operation
Client
Handler1
Operation
successor
8/6/2019 DesignPattern Desc + Exemple
25/40
25
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
49Les design patterns
Utilisation
On utilise Command lorsque :
spcifier, stocker et excuter des actions desmoments diffrents.
on veut pouvoir "dfaire". Les commandes excutespeuvent tre stockes ainsi que les tats des objets
affects... on veut implanter des transactions ; actions de "haut-niveau".
A. Beugnard ENST Bretagne
50Les design patterns
Command
Command
Execute
ConcreteCommand
Execute
Client
Receiver.
Action
Invoker
receiver
8/6/2019 DesignPattern Desc + Exemple
26/40
26
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
51Les design patterns
Utilisation
On utilise Interpreter lorsqu'il faut interprter un langageet que :
la grammaire est simple
l'efficacit n'est pas un paramtre critique
A. Beugnard ENST Bretagne
52Les design patterns
Interpreter
Expression
Interpret
NonTerminalExpr.
Interpret
Client
TerminalExpres.
Interpret
Context
8/6/2019 DesignPattern Desc + Exemple
27/40
27
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
53Les design patterns
Utilisation
On utilise Iterator lorsque : pour accder un objet compos dont on ne veut
pas exposer la structure interne pour offrir plusieurs manires de parcourir une
structure compose pour offrir une interface uniforme pour parcourir
diffrentes structures
A. Beugnard ENST Bretagne
54Les design patterns
Iterator
Iterator
first next
donecurrent
ConcreteIterator
ConcreteAggregate
Aggregate
createIterator
Client
8/6/2019 DesignPattern Desc + Exemple
28/40
28
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
55Les design patterns
Utilisation
On utilise Mediator lorsque :
quand de nombreux objets doivent communiquerensemble
la rutilisation d'un objet est dlicate car il rfrenceet communique avec de nombreux autres objets
A. Beugnard ENST Bretagne
56Les design patterns
Mediator
Colleague
ConcreteColleague2.ConcreteColleague1.ConcreteMediator
Mediatormediator
8/6/2019 DesignPattern Desc + Exemple
29/40
29
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
57Les design patterns
Utilisation
On utilise Memento lorsque :
on veut sauvegarder tout ou partie de l'tat d'un objetpour ventuellement pouvoir le restaurer, et
une interface directe pour obtenir l'tat de l'objet
briserait l'encapsulation
A. Beugnard ENST Bretagne
58Les design patterns
Memento
CaretakerMementoOriginator
8/6/2019 DesignPattern Desc + Exemple
30/40
30
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
59Les design patterns
Utilisation
On utilise Observer lorsque : Une abstraction a plusieurs aspects, dpendant l'un
de l'autre. Encapsuler ces aspects indpendamentpermet de les rutiliser sparment.
Quand le changement d'un objet se rpercute versd'autres.
Quand un objet doit prvenir d'autres objets sanspour autant les connaitre.
A. Beugnard ENST Bretagne
60Les design patterns
Observer
ConcreteSubject
Subject
AttachDetachNotify
ConcreteObserver
Update
Observer
Update
observers
subject
forall observers
o.update
subject.action
8/6/2019 DesignPattern Desc + Exemple
31/40
31
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
61Les design patterns
Utilisation
On utilise State lorsque :
Le comportement d'un objet dpend de son tat, quichange l'excution
Les oprations sont constitues de partie
conditionnelles de grande taille (case)
A. Beugnard ENST Bretagne
62Les design patterns
State
Context
Request
ConcreteStateB
Handle
State
Handle
state.handle
ConcreteStateA
Handle
state
8/6/2019 DesignPattern Desc + Exemple
32/40
32
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
63Les design patterns
Utilisation
On utilise Strategy lorsque : de nombreuses classes associes ne diffrent que
par leur comportement. Stratgie offre un moyen deconfigurer une classe avec un comportement parmiplusieurs.
on a besoin de plusieurs variantes d'algorithme.
un algorithme utilise des donnes que les clients nedoivent pas connaitre.
A. Beugnard ENST Bretagne
64Les design patterns
Strategy
Context
Request
ConcreteStrategyB
interfaceAlgo
Strategy
interfaceAlgo
ConcreteStrategyA
interfaceAlgo
strategy
8/6/2019 DesignPattern Desc + Exemple
33/40
33
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
65Les design patterns
Utilisation
On utilise TemplateMethod :
pour implanter une partie invariante d'un algorithme. pour partager des comportements communs d'une
hirarchie de classes. pour contrler des extensions de sous-classe.
A. Beugnard ENST Bretagne
66Les design patterns
Template Method
ConcreteClass
Templateoperation1operation2
AbstractClass
Templateoperation1operation2
operation1
operation2
8/6/2019 DesignPattern Desc + Exemple
34/40
34
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
67Les design patterns
Utilisation
On utilise Visitor lorsque :
une structure d'objets contient de nombreusesclasses avec des interfaces diffrentes et on veutappliquer des operations diverses sur ces objets.
les structures sont assez stables, et les opration sur
leurs objets volutives.
A. Beugnard ENST Bretagne
68Les design patterns
Visitor
ConcreteElementB
accept(Visitor v)
Element
accept(Visitor)
ConcreteElementA
accept(Visitor v)
ConcreteVisitorB
visitConcretElementA()
Vistor
visitConcretElementA()
ConcreteVisitorA
visitConcretElementA()
v.visitConcretElementA(this)
8/6/2019 DesignPattern Desc + Exemple
35/40
35
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
69Les design patterns
Application des formes lors de la conception Trouver les bons objets Bien choisir la granularit des objets Spcifier les interfaces des objets Spcifier l'implantation des objets Mieux rutiliser
hritage vs composition dlgation
Compiled-Time vs Run-Time Structures Concevoir pour l'volution
BIS
A. Beugnard ENST Bretagne
70Les design patterns
Trouver les bons objets
Les patterns proposent des abstractions quin'apparaissent pas "naturellement" en observant lemonde rel :
Composite : permet de traiter uniformment unestructure d'objets htrognes
Strategy : permet d'implanter une familled'algorithmes interchangeables
State
Ils amliorent la flexibilit et la rutilisabilit
8/6/2019 DesignPattern Desc + Exemple
36/40
36
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
71Les design patterns
Bien choisir la granularit des objets
La taille des objets peut varier considrablement ;comment choisir ce qui doit tre dcompos ou aucontraire regroup ?
Facade Flyweight
Abstract Factory Builder
A. Beugnard ENST Bretagne
72Les design patterns
Spcifier les interfaces des objets
Quest-ce qui fait partie dun objet ou non ?
Memento ; mmorise les tats, retour arrire Decorator ; augmente l'interface Proxy ; interface dlgu Visitor ; regroupe des interfaces Facade ; cache une structure complexe d'objet
8/6/2019 DesignPattern Desc + Exemple
37/40
37
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
73Les design patterns
Spcifier l'implantation des objets
Diffrence type-classe Chain of Responsibility ; mme interface, mais
implantations diffrentes Composite ; les Components ont une mme interface
dont l'implantation est en partie partage dans leComposite
Command, Observer, State, Strategy ne sont souventque des interfaces abstraites Prototype, Singleton, Factory, Builder sont des
abstractions pour crer des objets qui permettent depenser en termes d'interfaces et de leur associerdiffrentes implantations
A. Beugnard ENST Bretagne
74Les design patterns
Mieux rutiliser
hritage vs composition white-box reuse ; rompt l'encapsulation - stricte ou non black-box reuse ; flexible, dynamique
"Prfrez la composition l'hritage"
dlgation (redirection) Une forme de composition...qui remplace l'hritage Bridge dcouple l'interface de l'implantation Mediator, Visitor, Proxy
8/6/2019 DesignPattern Desc + Exemple
38/40
38
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
75Les design patterns
Compiled-Time vs Run-Time Structures Aggrgation
composition, is-part-ofdpendence, dure de vie lie, responsabilitplus stable ~ compiled-time, statique
Connaissance (accointance)lien, associationrelation fugitive, utilisation ponctuelledynamique, run-time
A. Beugnard ENST Bretagne
76Les design patterns
Concevoir pour l'volution (1)
Quelques raisons de "reengineering" : Cration d'un objet en rfrenant sa classe
explicitement...Lien une implantation
particulire...pour viter utilisez AbstractFactory,FactoryMethod, Prototype Dpendance d'une opration spcifique...pour
rendre plus souple utilisez Chain OfResponsibility, Command
Dpendance d'une couche matrielle oulogicielle...AbstractFactory, Bridge
8/6/2019 DesignPattern Desc + Exemple
39/40
39
Les design patterns
A. Beugnard 1999
A. Beu nard ENST Breta ne
77Les design patterns
Concevoir pour l'volution (2)
Quelques raisons de "reengineering" : Dpendance d'une implantation...pour rendre
plus souple utilisez AbstractFactory, Bridge,Memento, Proxy
Dpendance d'un algorithmeparticulier...Builder, Iterator, Strategy,TemplateMethod, Strategy
Couplage fort...relcher les relations utilisezAbstractFactory, Bridge, Chain OfResponsibility, Command, Facade, Mediator,Observer
A. Beugnard ENST Bretagne
78Les design patterns
Concevoir pour l'volution (3)
Quelques raisons de "reengineering" : Etendre les fonctionnalits en sous-classant
peut tre couteux (tests, comprhension des
superclasses, etc) utilisez aussi la dlgation, lacomposition...Bridge, Chain Of Responsibility,Composite, Decorator, Observer, Strategy,Proxy
Impossibilit de modifier une classe...absencedu source, trop de rpercussions, voyezAdapter, Decorator, Visitor
8/6/2019 DesignPattern Desc + Exemple
40/40
Les design patterns
A. Beu nard ENST Breta ne
79Les design patterns
Autres patterns
Architecture : Couche : systmes en couches (OS, piles OSI)
proche de Facade
Algorithmique distribu : Jeton circulant
Vague de calculs diffusant
A. Beugnard ENST Bretagne
80Les design patterns
Conclusion
Architecture de logiciel
Capitalisation d'expriences dans les Patterns
Une forme se mmorise bien, s'adaptencessairement
Pas rserv aux objets
Comme la prose, on les utilise sans le savoir ! maisquand on en est conscient, on amliore sa rflexion.
Top Related