Enviar pesquisa
Carregar
Dp
•
1 gostou
•
619 visualizações
ا
اللهم توفني ساجدة لله
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 40
Baixar agora
Baixar para ler offline
Recomendados
Cómo enviar mensajes
Cómo enviar mensajes
juanjoreverte
Examen proximedia
Examen proximedia
Krea Sales CPM - P&G
Présentation spacesheep
Présentation spacesheep
juliendellacherie
Reservas de espacios y materiales
Reservas de espacios y materiales
juanjoreverte
Temps periscolaire et contraintes pro parents insee septembre 2011_http://www...
Temps periscolaire et contraintes pro parents insee septembre 2011_http://www...
Ministère de l'Économie et des Finances
Rapport cpcs 2010 secteur des services en 2010
Rapport cpcs 2010 secteur des services en 2010
Ministère de l'Économie et des Finances
LIBRO: EL PROCESO DE INVESTIGACIÓN
LIBRO: EL PROCESO DE INVESTIGACIÓN
Ps Avila Ψ
RSLN #3 - La fureur verte
RSLN #3 - La fureur verte
RSLN mag
Recomendados
Cómo enviar mensajes
Cómo enviar mensajes
juanjoreverte
Examen proximedia
Examen proximedia
Krea Sales CPM - P&G
Présentation spacesheep
Présentation spacesheep
juliendellacherie
Reservas de espacios y materiales
Reservas de espacios y materiales
juanjoreverte
Temps periscolaire et contraintes pro parents insee septembre 2011_http://www...
Temps periscolaire et contraintes pro parents insee septembre 2011_http://www...
Ministère de l'Économie et des Finances
Rapport cpcs 2010 secteur des services en 2010
Rapport cpcs 2010 secteur des services en 2010
Ministère de l'Économie et des Finances
LIBRO: EL PROCESO DE INVESTIGACIÓN
LIBRO: EL PROCESO DE INVESTIGACIÓN
Ps Avila Ψ
RSLN #3 - La fureur verte
RSLN #3 - La fureur verte
RSLN mag
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
New Brunswick Non Profit Housing Association - L'Association de logement sans-but lucratif du Nouveau Brunswick
Cecaba 15 aniversario
Cecaba 15 aniversario
cosasdeandalucia
Actividad reciente
Actividad reciente
juanjoreverte
Bloque administración
Bloque administración
juanjoreverte
Lire en vendée 26 avril2013
Lire en vendée 26 avril2013
ecrivains-vendee
A la découverte de Drupal
A la découverte de Drupal
Claire Roubey
Complejo Educativo Virtual
Complejo Educativo Virtual
Carlos Luis Gomez Valderrama
Lucía i Cristina T
Lucía i Cristina T
ggracia2
Rapport2010
Rapport2010
Ministère de l'Économie et des Finances
RSLN #8 - L'info est-elle prête pour sa révolution ?
RSLN #8 - L'info est-elle prête pour sa révolution ?
RSLN mag
Guía en la redacción al estilo APA, 6ta edición
Guía en la redacción al estilo APA, 6ta edición
Ps Avila Ψ
Presentationite : Maladie courante des présentations actuelles
Presentationite : Maladie courante des présentations actuelles
Johanne Martel
Shidelidiapaez.doc
Shidelidiapaez.doc
15177783
La Calidad más allá de la Certificación
La Calidad más allá de la Certificación
Juan Carlos Fernandez
Rapport sur la depense publique et son évolution
Rapport sur la depense publique et son évolution
Ministère de l'Économie et des Finances
MESAS DE LUZ
MESAS DE LUZ
Escarabajo Muebles
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
Ministère de l'Économie et des Finances
PSP
PSP
mariaylaura
Time To Market 09 Sshow
Time To Market 09 Sshow
gus1971
La bibliothèque dans l'inconscient collectif : une double contrainte
La bibliothèque dans l'inconscient collectif : une double contrainte
Marielle de Miribel
Mais conteúdo relacionado
Destaque
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
New Brunswick Non Profit Housing Association - L'Association de logement sans-but lucratif du Nouveau Brunswick
Cecaba 15 aniversario
Cecaba 15 aniversario
cosasdeandalucia
Actividad reciente
Actividad reciente
juanjoreverte
Bloque administración
Bloque administración
juanjoreverte
Lire en vendée 26 avril2013
Lire en vendée 26 avril2013
ecrivains-vendee
A la découverte de Drupal
A la découverte de Drupal
Claire Roubey
Complejo Educativo Virtual
Complejo Educativo Virtual
Carlos Luis Gomez Valderrama
Lucía i Cristina T
Lucía i Cristina T
ggracia2
Rapport2010
Rapport2010
Ministère de l'Économie et des Finances
RSLN #8 - L'info est-elle prête pour sa révolution ?
RSLN #8 - L'info est-elle prête pour sa révolution ?
RSLN mag
Guía en la redacción al estilo APA, 6ta edición
Guía en la redacción al estilo APA, 6ta edición
Ps Avila Ψ
Presentationite : Maladie courante des présentations actuelles
Presentationite : Maladie courante des présentations actuelles
Johanne Martel
Shidelidiapaez.doc
Shidelidiapaez.doc
15177783
La Calidad más allá de la Certificación
La Calidad más allá de la Certificación
Juan Carlos Fernandez
Rapport sur la depense publique et son évolution
Rapport sur la depense publique et son évolution
Ministère de l'Économie et des Finances
MESAS DE LUZ
MESAS DE LUZ
Escarabajo Muebles
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
Ministère de l'Économie et des Finances
PSP
PSP
mariaylaura
Time To Market 09 Sshow
Time To Market 09 Sshow
gus1971
La bibliothèque dans l'inconscient collectif : une double contrainte
La bibliothèque dans l'inconscient collectif : une double contrainte
Marielle de Miribel
Destaque
(20)
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
ALSBLNB Conférence 2014 Saint John Atelier C- Propager le mot sur le logemen...
Cecaba 15 aniversario
Cecaba 15 aniversario
Actividad reciente
Actividad reciente
Bloque administración
Bloque administración
Lire en vendée 26 avril2013
Lire en vendée 26 avril2013
A la découverte de Drupal
A la découverte de Drupal
Complejo Educativo Virtual
Complejo Educativo Virtual
Lucía i Cristina T
Lucía i Cristina T
Rapport2010
Rapport2010
RSLN #8 - L'info est-elle prête pour sa révolution ?
RSLN #8 - L'info est-elle prête pour sa révolution ?
Guía en la redacción al estilo APA, 6ta edición
Guía en la redacción al estilo APA, 6ta edición
Presentationite : Maladie courante des présentations actuelles
Presentationite : Maladie courante des présentations actuelles
Shidelidiapaez.doc
Shidelidiapaez.doc
La Calidad más allá de la Certificación
La Calidad más allá de la Certificación
Rapport sur la depense publique et son évolution
Rapport sur la depense publique et son évolution
MESAS DE LUZ
MESAS DE LUZ
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
Fonds d’assurance maladie igf rapport 2010 / http://www.igf.finances.gouv.fr...
PSP
PSP
Time To Market 09 Sshow
Time To Market 09 Sshow
La bibliothèque dans l'inconscient collectif : une double contrainte
La bibliothèque dans l'inconscient collectif : une double contrainte
Dp
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 d'un 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 Bretagne A. Beugnard 1 1999
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 Bretagne A. Beugnard 2 1999
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 Bretagne A. Beugnard 3 1999
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 l'application 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 Bretagne A. Beugnard 4 1999
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" l'utilisation 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 Bretagne A. Beugnard 5 1999
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 Bretagne A. Beugnard 6 1999
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 l'implantation 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 Bretagne A. Beugnard 7 1999
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 • L'hé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 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 ENST Bretagne A. Beugnard 8 1999
9.
Les design patterns
Les design patterns 17 Principes • AbstractFactory ; on passe un paramètre à la création qui définit ce qu'on va créer • Builder ; on passe en paramètre un objet qui sait construire l'objet à partir d'une 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 l'AbstractFactory 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 d'une 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 Bretagne A. Beugnard 9 1999
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 : • l'algorithme 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 l'objet construit © A. Beugnard ENST Bretagne A. Beugnard 10 1999
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 l'objet qu'elle doit construire • une classe délègue la responsabilité de la création à ses sous-classes, tout en concentrant l'interface dans une classe unique © A. Beugnard ENST Bretagne A. Beugnard 11 1999
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 n'est connue qu'à l'exécution • pour éviter une hiérarchie de Factory parallèle à une hiérarchie de produits © A. Beugnard ENST Bretagne A. Beugnard 12 1999
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 n'y a qu'une unique instance d'une classe et qu'elle 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 Bretagne A. Beugnard 13 1999
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 Bretagne A. Beugnard 14 1999
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 l'Adapter lorsque on veut utiliser : • une classe existante dont l'interface ne convient pas • plusieurs sous-classes mais il est est coûteux de redéfinir l'interface de chaque sous-classe en les sous-classant. Un adapter peut adapter l'interface au niveau du parent. © A. Beugnard ENST Bretagne A. Beugnard 15 1999
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 Bretagne A. Beugnard 16 1999
17.
Les design patterns
Les design patterns 33 Utilisation Conception nouvelle On utilise Bridge lorsque : • on veut éviter un lien permanent entre l'abstraction et l'implantation (ex: l'implantation est choisie à l'exécution) • l'abstraction et l'implantation sont toutes les deux susceptibles d'être raffinées • les modifications subies par l'implantation ou l'abstraction ne doivent pas avoir d'impacts 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 Bretagne A. Beugnard 17 1999
18.
Les design patterns
Les design patterns 35 Utilisation On utilise Composite lorsque on veut : • représenter une hiérarchie d'objets • ignorer la différence entre un composant simple et un composant en contenant d'autres. (interface uniforme) © A. Beugnard ENST Bretagne Les design patterns 36 Composite Component Operation add Feuille Composite Operation add © A. Beugnard ENST Bretagne A. Beugnard 18 1999
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 qu'il serait impraticable d'implanter 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 Bretagne A. Beugnard 19 1999
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 Bretagne A. Beugnard 20 1999
21.
Les design patterns
Les design patterns 41 Utilisation On utilise Flyweight lorsque : • on utilise beaucoup d'objets, et • les coûts de sauvegarde sont élevés, et • l'état des objets peut être externalisé (extrinsic), et • de nombreux groupes d'objets peuvent être remplacés par quelques objets partagés un fois que les états sont externalisés, et • l'application ne dépend pas de l'identité 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 Bretagne A. Beugnard 21 1999
22.
Les design patterns
Les design patterns 43 Utilisation On utilise le Proxy lorsqu'on veut référencer un objet par un moyen plus complexe qu'un pointeur... • remote proxy : ambassadeur • protection proxy : contrôle d'accè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 Bretagne A. Beugnard 22 1999
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 Bretagne A. Beugnard 23 1999
24.
Les design patterns
Les design patterns 47 Utilisation On utilise Chain of Responsibility lorsque : • plus d'un objet peut traiter une requète, et il n'est pas connu a priori • l'ensemble 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 Bretagne A. Beugnard 24 1999
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 Bretagne A. Beugnard 25 1999
26.
Les design patterns
Les design patterns 51 Utilisation On utilise Interpreter lorsqu'il faut interpréter un langage et que : • la grammaire est simple • l'efficacité n'est 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 Bretagne A. Beugnard 26 1999
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 Bretagne A. Beugnard 27 1999
28.
Les design patterns
Les design patterns 55 Utilisation On utilise Mediator lorsque : • quand de nombreux objets doivent communiquer ensemble • la réutilisation d'un 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 Bretagne A. Beugnard 28 1999
29.
Les design patterns
Les design patterns 57 Utilisation On utilise Memento lorsque : • on veut sauvegarder tout ou partie de l'état d'un objet pour éventuellement pouvoir le restaurer, et • une interface directe pour obtenir l'état de l'objet briserait l'encapsulation © A. Beugnard ENST Bretagne Les design patterns 58 Memento Originator Memento Caretaker © A. Beugnard ENST Bretagne A. Beugnard 29 1999
30.
Les design patterns
Les design patterns 59 Utilisation On utilise Observer lorsque : • Une abstraction a plusieurs aspects, dépendant l'un de l'autre. Encapsuler ces aspects indépendament permet de les réutiliser séparément. • Quand le changement d'un objet se répercute vers d'autres. • Quand un objet doit prévenir d'autres 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 Bretagne A. Beugnard 30 1999
31.
Les design patterns
Les design patterns 61 Utilisation On utilise State lorsque : • Le comportement d'un objet dépend de son état, qui change à l'exé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 Bretagne A. Beugnard 31 1999
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 d'algorithme. • 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 Bretagne A. Beugnard 32 1999
33.
Les design patterns
Les design patterns 65 Utilisation On utilise TemplateMethod : • pour implanter une partie invariante d'un algorithme. • pour partager des comportements communs d'une 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 Bretagne A. Beugnard 33 1999
34.
Les design patterns
Les design patterns 67 Utilisation On utilise Visitor lorsque : • une structure d'objets 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 Bretagne A. Beugnard 34 1999
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 l'implantation 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 n'apparaissent pas "naturellement" en observant le monde réel : • Composite : permet de traiter uniformément une structure d'objets hétérogènes • Strategy : permet d'implanter une famille d'algorithmes interchangeables • State Ils améliorent la flexibilité et la réutilisabilité © A. Beugnard ENST Bretagne A. Beugnard 35 1999
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 l'interface • Proxy ; interface délégué • Visitor ; regroupe des interfaces • Facade ; cache une structure complexe d'objet © A. Beugnard ENST Bretagne A. Beugnard 36 1999
37.
Les design patterns
Les design patterns 73 Spécifier l'implantation 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 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 Les design patterns 74 Mieux réutiliser • héritage vs composition – white-box reuse ; rompt l'encapsulation - stricte ou non – black-box reuse ; flexible, dynamique "Préférez la composition à l'héritage" • 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 ENST Bretagne A. Beugnard 37 1999
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 d'un objet en référençant sa classe explicitement...Lien à une implantation particulière...pour éviter utilisez AbstractFactory, FactoryMethod, Prototype • Dépendance d'une opération spécifique...pour rendre plus souple utilisez Chain Of Responsibility, Command • Dépendance d'une couche matérielle ou logicielle...AbstractFactory, Bridge © A. Beugnard ENST Bretagne A. Beugnard 38 1999
39.
Les design patterns
Les design patterns 77 Concevoir pour l'évolution (2) Quelques raisons de "reengineering" : • Dépendance d'une implantation...pour rendre plus souple utilisez AbstractFactory, Bridge, Memento, Proxy • Dépendance d'un 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 Bretagne A. Beugnard 39 1999
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 d'expériences dans les Patterns • Une forme se mémorise bien, s'adapte 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 Bretagne A. Beugnard 40 1999
Baixar agora