Les design patterns      Les design patterns                                                               1            De...
Les design patterns      Les design patterns                                                               3            Ce...
Les design patterns      Les design patterns                                                       5            Avantages ...
Les design patterns      Les design patterns                                                   7            Description d’...
Les design patterns      Les design patterns                                                          9            Forme e...
Les design patterns      Les design patterns                                                     11            Gamma, Helm...
Les design patterns      Les design patterns                                           13            Application des forme...
Les design patterns      Les design patterns                                              15            Remarque          ...
Les design patterns      Les design patterns                                               17            Principes        ...
Les design patterns      Les design patterns                                                                 19           ...
Les design patterns      Les design patterns                                                            21            Buil...
Les design patterns      Les design patterns                                                      23            FactoryMet...
Les design patterns      Les design patterns                                                           25            Proto...
Les design patterns      Les design patterns                                                           27            Singl...
Les design patterns      Les design patterns                                                  29            Principes     ...
Les design patterns      Les design patterns                                                          31            Adapte...
Les design patterns      Les design patterns                                                          33            Utilis...
Les design patterns      Les design patterns                                             35            Utilisation        ...
Les design patterns      Les design patterns                                                                  37          ...
Les design patterns      Les design patterns                                               39            Utilisation      ...
Les design patterns      Les design patterns                                                       41            Utilisati...
Les design patterns      Les design patterns                                                                  43          ...
Les design patterns      Les design patterns                                          45            Behavioural Patterns  ...
Les design patterns      Les design patterns                                                          47            Utilis...
Les design patterns      Les design patterns                                                                49            ...
Les design patterns      Les design patterns                                                         51            Utilisa...
Les design patterns      Les design patterns                                                  53            Utilisation   ...
Les design patterns      Les design patterns                                                        55            Utilisat...
Les design patterns      Les design patterns                                                  57            Utilisation   ...
Les design patterns      Les design patterns                                                               59            U...
Les design patterns      Les design patterns                                                         61            Utilisa...
Les design patterns      Les design patterns                                                       63            Utilisati...
Les design patterns      Les design patterns                                               65            Utilisation      ...
Les design patterns      Les design patterns                                                            67            Util...
Les design patterns      Les design patterns                                                    69            Application ...
Les design patterns      Les design patterns                                              71            Bien choisir la gr...
Les design patterns      Les design patterns                                                         73            Spécifi...
Les design patterns      Les design patterns                                                  75            Compiled-Time ...
Les design patterns      Les design patterns                                                 77            Concevoir pour ...
Les design patterns      Les design patterns                                                 79            Autres patterns...
Upcoming SlideShare
Loading in...5
×

Dp

346

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
346
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Dp"

  1. 1. Les design patterns Les design patterns 1 Design Pattern • Objectifs – Comprendre les bases de la philosophie des « formes de conception » – Connaître le vocabulaire spécifique – Connaître quelques « patterns » – Concevoir objet différemment © A. Beugnard ENST Bretagne Les design patterns 2 Design Pattern En architecture (Christopher Alexander) • Description dun problème rémanent et de sa solution • Solution pouvant être utilisée des millions de fois sans être deux fois identique • Forme de conception, pattern, modèle, patron de conception • Mur, porte, fenêtre <--> objet, interface, classe Il existe aussi des « anti-patterns » © A. Beugnard ENST BretagneA. Beugnard 1 1999
  2. 2. Les design patterns Les design patterns 3 Ce que c ’est • Description d ’une solution classique à un problème récurent • Décrit une partie de la solution… • Avec des relations avec le système et les autres parties... • C ’est une technique d ’architecture logicielle © A. Beugnard ENST Bretagne Les design patterns 4 Ce que ce n ’est pas • 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... « Computer scientists think they have discovered the world » Anonymous © A. Beugnard ENST BretagneA. Beugnard 2 1999
  3. 3. Les design patterns Les design patterns 5 Avantages • Un vocabulaire commun • Capitalisation de l ’expérience • Un niveau d ’abstraction plus élevé qui permet d ’élaborer des constructions logicielles de meilleure qualité • Réduire la complexité • Guide/catalogue de solutions © A. Beugnard ENST Bretagne Les design patterns 6 Inconvénients • Effort de synthèse ; reconnaître, abstraire… • Apprentissage, expérience • Les patterns « se dissolvent » en étant utilisés • Nombreux… – lesquels sont identiques ? – De niveaux différents … des patterns s ’appuient sur d ’autres... © A. Beugnard ENST BretagneA. Beugnard 3 1999
  4. 4. Les design patterns Les design patterns 7 Description d’une forme : langage de pattern • nom : augmente le vocabulaire, réifie une idée de solution, permet de mieux communiquer. • problème : quand appliquer la forme, le contexte... • solution : les éléments de la solution, leurs relations, responsabilités, collaborations. Pas de manière précise, mais suggestives... • conséquences : résultats et compromis issus de lapplication de la forme © A. Beugnard ENST Bretagne Les design patterns 8 Exemple • Nom Salle d ’attente • Problème On doit attendre • Solution Toujours relaxante et pas confinée • Conséquences Attente active ou passive ? Durée de l ’attente ? Distraction ? • Exemples Aéroport, dentiste, ... © A. Beugnard ENST BretagneA. Beugnard 4 1999
  5. 5. Les design patterns Les design patterns 9 Forme et langage • Une forme est indépendante du langage (plutôt orienté-objet, mais pas exclusivement, cf. Patterns dans Minix) • Mais certaines constructions syntaxiques ou propriétés du langage rendent inutile ou "naturelle" lutilisation de telle ou telle forme (ex : multi-methode simplifie les visiteurs) © A. Beugnard ENST Bretagne Les design patterns 10 Interactions Formes-langages • Influence des langages sur les Patterns – des langages implantent des formes de bas niveau – quelques formes utilisent des concepts spécifiques à un langage – quelques formes ne sont pas indépendantes des langages – certains langages forcent à tordre des formes compliquées lors de l ’implantation • Influence des Patterns sur les langages – Les Formes capitalisent l ’état de réflexion courant sur les pratiques de programmation. © A. Beugnard ENST BretagneA. Beugnard 5 1999
  6. 6. Les design patterns Les design patterns 11 Gamma, Helm, Johnson, Vlissides "Design Patterns" • Nom et classification • Implantation • Intention • Exemple de code • Autres noms connus • Usages connus • Motivation (scénario) • Formes associées • Applicabilité • Structure (OMT) • Participants (classes…) • Collaborations La BIBLE • Conséquences Gang4 © A. Beugnard ENST Bretagne Les design patterns 12 Classification Créateurs Structuraux Comportementaux Class Factory Method Adapter(class) Interpreter Template Method Object Abstract Factory Adapter(objet) Chain of Respons. Builder Bridge Command Prototype Composite Iterator Singleton Decorator Mediator Facade Memento Flyweight Observer Proxy State Strategy Visitor © A. Beugnard ENST BretagneA. Beugnard 6 1999
  7. 7. Les design patterns Les design patterns 13 Application des formes lors de la conception • Trouver les bons objets • Bien choisir la granularité des objets • Spécifier les interfaces des objets • Spécifier limplantation des objets • Mieux réutiliser – héritage vs composition – délégation • Compiled-Time vs Run-Time Structures • Concevoir pour lévolution © A. Beugnard ENST Bretagne Les design patterns 14 Mais d’abord, le catalogue ! • Créational Patterns • Structural Patterns • Behavioural Patterns © A. Beugnard ENST BretagneA. Beugnard 7 1999
  8. 8. Les design patterns Les design patterns 15 Remarque • La référence "Design Patterns" décrit les formes par des diagrammes OMT... – Comme dans la suite MAIS • Lhéritage et les objets ne sont pas nécessaires © A. Beugnard ENST Bretagne Les design patterns 16 Creational Patterns Formes de création : • Abstraire le processus dinstanciation. • 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 ENST BretagneA. Beugnard 8 1999
  9. 9. Les design patterns Les design patterns 17 Principes • AbstractFactory ; on passe un paramètre à la création qui définit ce quon va créer • Builder ; on passe en paramètre un objet qui sait construire lobjet à partir dune description • FactoryMethod ; la classe sollicité appelle des méthode abstraites ...il suffit de sous-classer • Prototype ; des prototypes variés existent qui sont copiés et assemblés • Singleton ; unique instance © A. Beugnard ENST Bretagne Les design patterns 18 Utilisation On utilise lAbstractFactory lorsque : • un système doit être indépendant de la façon dont ses produits sont créés, assemblés, représentés • un système repose sur un produit dune famille de produits • une famille de produits doivent être utilisés ensemble, pour renforcer cette contrainte • on veut définir une interface unique à une famille de produits concrets © A. Beugnard ENST BretagneA. Beugnard 9 1999
  10. 10. Les design patterns Les design patterns 19 Abstract Factory Client WidgetFactory createWindow Window createScrollBar Factory MacWindow MotifWindow MotifWidgetFactory MacWidgetFactory createWindow createWindow ScrollBar createScrollBar createScrollBar Products MacScrollBar MotifScrollBar © A. Beugnard ENST Bretagne Les design patterns 20 Utilisation On utilise le Builder lorsque : • lalgorithme pour créer un objet doit être indépendant des parties qui le compose et de la façon de les assembler • le processus de construction permet différentes représentations de lobjet construit © A. Beugnard ENST BretagneA. Beugnard 10 1999
  11. 11. Les design patterns Les design patterns 21 Builder Builder Director structure buildPart construct ConcreteBuilder forall objects in structure { builder -> BuildPart() buildPart } getResult Product © A. Beugnard ENST Bretagne Les design patterns 22 Utilisation On utilise le FactoryMethod lorsque : • une classe ne peut anticiper la classe de lobjet quelle doit construire • une classe délègue la responsabilité de la création à ses sous-classes, tout en concentrant linterface dans une classe unique © A. Beugnard ENST BretagneA. Beugnard 11 1999
  12. 12. Les design patterns Les design patterns 23 FactoryMethod Creator Product factoryMethod produit := factoryMethod UneOperation ConcreteCreator ConcreteProduct return new ConcreteProduct factoryMethod © A. Beugnard ENST Bretagne Les design patterns 24 Utilisation On utilise le Prototype lorsque : • un système doit être indépendant de la façon dont ses produits sont créés, assemblés, représentés • quand la classe nest connue quà lexécution • pour éviter une hiérarchie de Factory parallèle à une hiérarchie de produits © A. Beugnard ENST BretagneA. Beugnard 12 1999
  13. 13. Les design patterns Les design patterns 25 Prototype Prototype Client clone Operation o = prototype.clone ConcretePrototype1 ConcretePrototype2 clone clone return a copy of self return a copy of self © A. Beugnard ENST Bretagne Les design patterns 26 Utilisation On utilise le Singleton lorsque : • il ny a quune unique instance dune classe et quelle doit être accessible de manière connue • une instance unique peut être sous-classée et que les clients peuvent référencer cette extension sans avoir à modifier leur code © A. Beugnard ENST BretagneA. Beugnard 13 1999
  14. 14. Les design patterns Les design patterns 27 Singleton Singleton return soleInstance static Instance ... © A. Beugnard ENST Bretagne Les design patterns 28 Structural Patterns Formes de structure : • Comment les objets sont assemblés • Les patterns sont complémentaires les uns des autres © A. Beugnard ENST BretagneA. Beugnard 14 1999
  15. 15. Les design patterns Les design patterns 29 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 destinés à être partagés • Proxy ; un objet en masque un autre © A. Beugnard ENST Bretagne Les design patterns 30 Utilisation Adaptation conception On utilise lAdapter lorsque on veut utiliser : • une classe existante dont linterface ne convient pas • plusieurs sous-classes mais il est est coûteux de redéfinir linterface de chaque sous-classe en les sous-classant. Un adapter peut adapter linterface au niveau du parent. © A. Beugnard ENST BretagneA. Beugnard 15 1999
  16. 16. Les design patterns Les design patterns 31 Adapter Version héritage multiple Client Cible Adapté Request methodeSpec. Adapter Request methodSpec() © A. Beugnard ENST Bretagne Les design patterns 32 Adapter Version composition Client Cible Adapté Request methodeSpec. adapté Adapter Request adapté.methodSpec() © A. Beugnard ENST BretagneA. Beugnard 16 1999
  17. 17. Les design patterns Les design patterns 33 Utilisation Conception nouvelle On utilise Bridge lorsque : • on veut éviter un lien permanent entre labstraction et limplantation (ex: limplantation est choisie à lexécution) • labstraction et limplantation sont toutes les deux susceptibles dêtre raffinées • les modifications subies par limplantation ou labstraction ne doivent pas avoir dimpacts sur le client (pas de recompilation) © A. Beugnard ENST Bretagne Les design patterns 34 Bridge imp Client Abstraction Implementor Operation OperImpl1 imp.operImpl() RefinedAbstraction ConcreteImplA OperImpl1 © A. Beugnard ENST BretagneA. Beugnard 17 1999
  18. 18. Les design patterns Les design patterns 35 Utilisation On utilise Composite lorsque on veut : • représenter une hiérarchie dobjets • ignorer la différence entre un composant simple et un composant en contenant dautres. (interface uniforme) © A. Beugnard ENST Bretagne Les design patterns 36 Composite Component Operation add Feuille Composite Operation add © A. Beugnard ENST BretagneA. Beugnard 18 1999
  19. 19. Les design patterns Les design patterns 37 Utilisation On utilise Decorator lorsque : • il faut ajouter des responsabilités dynamiquement et de manière transparente • il existe des responsabilités dont on peut se passer • des extensions sont indépendantes et quil serait impraticable dimplanter par sous-classage © A. Beugnard ENST Bretagne Les design patterns 38 Decorator Component Operation comp ConcreteComponent Decorator Operation comp.Operation() DecoratorB DecoratorA super.Operation() addedBehavior() Operation addedBehavior © A. Beugnard ENST BretagneA. Beugnard 19 1999
  20. 20. Les design patterns Les design patterns 39 Utilisation On utilise Facade lorsque on veut : • fournir une interface simple à un système complexe • introduire une interface pour découpler les relations entre deux systèmes complexes • construire le système en couche © A. Beugnard ENST Bretagne Les design patterns 40 Facade FACADE © A. Beugnard ENST BretagneA. Beugnard 20 1999
  21. 21. Les design patterns Les design patterns 41 Utilisation On utilise Flyweight lorsque : • on utilise beaucoup dobjets, et • les coûts de sauvegarde sont élevés, et • létat des objets peut être externalisé (extrinsic), et • de nombreux groupes dobjets peuvent être remplacés par quelques objets partagés un fois que les états sont externalisés, et • lapplication ne dépend pas de lidentité des objets © A. Beugnard ENST Bretagne Les design patterns 42 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 ENST BretagneA. Beugnard 21 1999
  22. 22. Les design patterns Les design patterns 43 Utilisation On utilise le Proxy lorsquon veut référencer un objet par un moyen plus complexe quun pointeur... • remote proxy : ambassadeur • protection proxy : contrôle daccès • référence intelligente – persistence – comptage de référence –… © A. Beugnard ENST Bretagne Les design patterns 44 Proxy Client Subject Operation realSubject RealSubject Proxy Operation Operation realSubject.Operation © A. Beugnard ENST BretagneA. Beugnard 22 1999
  23. 23. Les design patterns Les design patterns 45 Behavioural Patterns Formes de comportement pour décrire : • des algorithmes • des comportements entre objets • des formes de communication entre objet © A. Beugnard ENST Bretagne Les design patterns 46 Principes • Chain of Responsibility • Command • Interpreter • Iterator • Mediator • Memento • Observer • State • Strategy • Template Method • Visitor © A. Beugnard ENST BretagneA. Beugnard 23 1999
  24. 24. Les design patterns Les design patterns 47 Utilisation On utilise Chain of Responsibility lorsque : • plus dun objet peut traiter une requète, et il nest pas connu a priori • lensemble des objets pouvant traiter une requète est construit dynamiquement © A. Beugnard ENST Bretagne Les design patterns 48 Chain of Responsibility successor Client Handler Operation Handler1 Handler2 Operation Operation © A. Beugnard ENST BretagneA. Beugnard 24 1999
  25. 25. Les design patterns Les design patterns 49 Utilisation On utilise Command lorsque : • spécifier, stocker et exécuter des actions à des moments différents. • on veut pouvoir "défaire". Les commandes exécutées peuvent être stockées ainsi que les états des objets affectés... • on veut implanter des transactions ; actions de "haut- niveau". © A. Beugnard ENST Bretagne Les design patterns 50 Command Invoker Command Execute Client Receiver. ConcreteCommand receiver Action Execute © A. Beugnard ENST BretagneA. Beugnard 25 1999
  26. 26. Les design patterns Les design patterns 51 Utilisation On utilise Interpreter lorsquil faut interpréter un langage et que : • la grammaire est simple • lefficacité nest pas un paramètre critique © A. Beugnard ENST Bretagne Les design patterns 52 Interpreter Client Expression Interpret Context TerminalExpres. NonTerminalExpr. Interpret Interpret © A. Beugnard ENST BretagneA. Beugnard 26 1999
  27. 27. Les design patterns Les design patterns 53 Utilisation On utilise Iterator lorsque : • pour accéder à un objet composé dont on ne veut pas exposer la structure interne • pour offrir plusieurs manières de parcourir une structure composée • pour offrir une interface uniforme pour parcourir différentes structures © A. Beugnard ENST Bretagne Les design patterns 54 Iterator Iterator Aggregate Client first createIterator next done current ConcreteAggregate ConcreteIterator © A. Beugnard ENST BretagneA. Beugnard 27 1999
  28. 28. Les design patterns Les design patterns 55 Utilisation On utilise Mediator lorsque : • quand de nombreux objets doivent communiquer ensemble • la réutilisation dun objet est délicate car il référence et communique avec de nombreux autres objets © A. Beugnard ENST Bretagne Les design patterns 56 Mediator Mediator Colleague mediator ConcreteMediator ConcreteColleague1. ConcreteColleague2. © A. Beugnard ENST BretagneA. Beugnard 28 1999
  29. 29. Les design patterns Les design patterns 57 Utilisation On utilise Memento lorsque : • on veut sauvegarder tout ou partie de létat dun objet pour éventuellement pouvoir le restaurer, et • une interface directe pour obtenir létat de lobjet briserait lencapsulation © A. Beugnard ENST Bretagne Les design patterns 58 Memento Originator Memento Caretaker © A. Beugnard ENST BretagneA. Beugnard 29 1999
  30. 30. Les design patterns Les design patterns 59 Utilisation On utilise Observer lorsque : • Une abstraction a plusieurs aspects, dépendant lun de lautre. Encapsuler ces aspects indépendament permet de les réutiliser séparément. • Quand le changement dun objet se répercute vers dautres. • Quand un objet doit prévenir dautres objets sans pour autant les connaitre. © A. Beugnard ENST Bretagne Les design patterns 60 Observer observers Subject Observer Attach Update Detach Notify forall observers o.update subject ConcreteSubject ConcreteObserver Update subject.action © A. Beugnard ENST BretagneA. Beugnard 30 1999
  31. 31. Les design patterns Les design patterns 61 Utilisation On utilise State lorsque : • Le comportement dun objet dépend de son état, qui change à lexécution • Les opérations sont constituées de partie conditionnelles de grande taille (case) © A. Beugnard ENST Bretagne Les design patterns 62 State Context state State Request Handle state.handle ConcreteStateA ConcreteStateB Handle Handle © A. Beugnard ENST BretagneA. Beugnard 31 1999
  32. 32. Les design patterns Les design patterns 63 Utilisation On utilise Strategy lorsque : • de nombreuses classes associées ne diffèrent que par leur comportement. Stratégie offre un moyen de configurer une classe avec un comportement parmi plusieurs. • on a besoin de plusieurs variantes dalgorithme. • un algorithme utilise des données que les clients ne doivent pas connaitre. © A. Beugnard ENST Bretagne Les design patterns 64 Strategy Context strategy Strategy Request interfaceAlgo ConcreteStrategyA ConcreteStrategyB interfaceAlgo interfaceAlgo © A. Beugnard ENST BretagneA. Beugnard 32 1999
  33. 33. Les design patterns Les design patterns 65 Utilisation On utilise TemplateMethod : • pour implanter une partie invariante dun algorithme. • pour partager des comportements communs dune hiérarchie de classes. • pour contrôler des extensions de sous-classe. © A. Beugnard ENST Bretagne Les design patterns 66 Template Method AbstractClass Template … operation1 operation1 operation2 … operation2 … ConcreteClass Template operation1 operation2 © A. Beugnard ENST BretagneA. Beugnard 33 1999
  34. 34. Les design patterns Les design patterns 67 Utilisation On utilise Visitor lorsque : • une structure dobjets contient de nombreuses classes avec des interfaces différentes et on veut appliquer des operations diverses sur ces objets. • les structures sont assez stables, et les opération sur leurs objets évolutives. © A. Beugnard ENST Bretagne Les design patterns 68 Visitor Vistor visitConcretElementA() Element accept(Visitor) ConcreteVisitorA ConcreteVisitorB visitConcretElementA() visitConcretElementA() ConcreteElementA ConcreteElementB v.visitConcretElementA(this) accept(Visitor v) accept(Visitor v) © A. Beugnard ENST BretagneA. Beugnard 34 1999
  35. 35. Les design patterns Les design patterns 69 Application des formes lors de la conception BIS • Trouver les bons objets • Bien choisir la granularité des objets • Spécifier les interfaces des objets • Spécifier limplantation des objets • Mieux réutiliser – héritage vs composition – délégation • Compiled-Time vs Run-Time Structures • Concevoir pour lévolution © A. Beugnard ENST Bretagne Les design patterns 70 Trouver les bons objets Les patterns proposent des abstractions qui napparaissent pas "naturellement" en observant le monde réel : • Composite : permet de traiter uniformément une structure dobjets hétérogènes • Strategy : permet dimplanter une famille dalgorithmes interchangeables • State Ils améliorent la flexibilité et la réutilisabilité © A. Beugnard ENST BretagneA. Beugnard 35 1999
  36. 36. Les design patterns Les design patterns 71 Bien choisir la granularité des objets La taille des objets peut varier considérablement ; comment choisir ce qui doit être décomposé ou au contraire regroupé ? • Facade • Flyweight • Abstract Factory • Builder © A. Beugnard ENST Bretagne Les design patterns 72 Spécifier les interfaces des objets Qu’est-ce qui fait partie d’un objet ou non ? • Memento ; mémorise les états, retour arrière • Decorator ; augmente linterface • Proxy ; interface délégué • Visitor ; regroupe des interfaces • Facade ; cache une structure complexe dobjet © A. Beugnard ENST BretagneA. Beugnard 36 1999
  37. 37. Les design patterns Les design patterns 73 Spécifier limplantation des objets Différence type-classe… • Chain of Responsibility ; même interface, mais implantations différentes • Composite ; les Components ont une même interface dont limplantation 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 dinterfaces et de leur associer différentes implantations © A. Beugnard ENST Bretagne Les design patterns 74 Mieux réutiliser • héritage vs composition – white-box reuse ; rompt lencapsulation - stricte ou non – black-box reuse ; flexible, dynamique "Préférez la composition à lhéritage" • délégation (redirection) – Une forme de composition...qui remplace lhéritage – Bridge découple linterface de limplantation – Mediator, Visitor, Proxy © A. Beugnard ENST BretagneA. Beugnard 37 1999
  38. 38. Les design patterns Les design patterns 75 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 ENST Bretagne Les design patterns 76 Concevoir pour lévolution (1) Quelques raisons de "reengineering" : • Création dun objet en référençant sa classe explicitement...Lien à une implantation particulière...pour éviter utilisez AbstractFactory, FactoryMethod, Prototype • Dépendance dune opération spécifique...pour rendre plus souple utilisez Chain Of Responsibility, Command • Dépendance dune couche matérielle ou logicielle...AbstractFactory, Bridge © A. Beugnard ENST BretagneA. Beugnard 38 1999
  39. 39. Les design patterns Les design patterns 77 Concevoir pour lévolution (2) Quelques raisons de "reengineering" : • Dépendance dune implantation...pour rendre plus souple utilisez AbstractFactory, Bridge, Memento, Proxy • Dépendance dun algorithme particulier...Builder, Iterator, Strategy, TemplateMethod, Strategy • Couplage fort...relâcher les relations utilisez AbstractFactory, Bridge, Chain Of Responsibility, Command, Facade, Mediator, Observer © A. Beugnard ENST Bretagne Les design patterns 78 Concevoir pour lévolution (3) Quelques raisons de "reengineering" : • Etendre les fonctionnalités en sous-classant peut être couteux (tests, compréhension des superclasses, etc) utilisez aussi la délégation, la composition...Bridge, Chain Of Responsibility, Composite, Decorator, Observer, Strategy, Proxy • Impossibilité de modifier une classe...absence du source, trop de répercussions, voyez Adapter, Decorator, Visitor © A. Beugnard ENST BretagneA. Beugnard 39 1999
  40. 40. Les design patterns Les design patterns 79 Autres patterns Architecture : • Couche : systèmes en couches (OS, piles OSI) proche de Facade Algorithmique distribué : • Jeton circulant • Vague de calculs diffusant © A. Beugnard ENST Bretagne Les design patterns 80 Conclusion • Architecture de logiciel • Capitalisation dexpériences dans les Patterns • Une forme se mémorise bien, sadapte nécessairement • Pas réservé aux objets • Comme la prose, on les utilise sans le savoir ! mais quand on en est conscient, on améliore sa réflexion. © A. Beugnard ENST BretagneA. Beugnard 40 1999

×