page de garde introduction aux design patterns isia, mars 2003 [email protected]

20
Page de garde Introduction aux Design Pattern ISIA, Mars 2003 [email protected] http://www.yannis.bres.name

Upload: nicole-jarry

Post on 03-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Page de garde

Introduction aux Design Patterns

ISIA, Mars 2003

[email protected]

http://www.yannis.bres.name

Page 2: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Modélisation d’objets

Modélisation d’objets

Limiter les dépendances entre objets

Des objectifs parfois antagonistes :

Encapsuler des données sans en empêcher l’accès

Simplicité d’utilisation

Trouver le bon niveau de granularité des objets

Concevoir des objets polyvalents, flexibles, réutilisables

Implémentation performante

Page 3: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Modélisation d’applications

Modélisation d’applications

Problèmes de conceptions récurrents : des Design Patterns

Modéliser correctement une application :

Processus complexe

Design Patterns, Elements of Reusable Object-Oriented Software

E. Gamma, R. Helm, R. Johnson, J. Vlissides - Addison Wesley

Expertise acquise au fil des expériences

Un (seminal) "livre de recettes" :

Page 4: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Un Design Pattern

Un Design Pattern

Description de la solution proposée

Nom

Exposé du problème

Exemple d’implémentation

Confrontation avec d’autres Design Patterns

Contexte de mise en œuvre, contraintes limitantes

Conseils d’implémentation

Relative standardisation du nommage des Design Patterns

Modèles parfois (souvent ?) triviaux

Page 5: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Principales classes de Design Patterns

Principales classes de Design Patterns

Composition de groupes d’objets

Patterns de création

Création d’objets sans instanciation directe d’une classe

Patterns de composition

Patterns comportementaux

Modélisation des communications inter-objets et du flot de données

Page 6: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Les Design Patterns

Les Design Patterns

  PurposeCreational Structural Behavioral

Scope

ClassFactory Method Adapter Interpreter

Template Method

Object

Abstract FactoryBuilderPrototypeSingleton

AdapterBridgeCompositeDecoratorFacadeProxy

Chain of ResponsibilityCommandIteratorMediatorMementoFlyweightObserverStateStrategyVisitor

Page 7: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Abstract Factory

Abstract Factory

Objectif : obtenir des instances de classes implémentant des interfaces connues, mais en ignorant le type réel de la classe obtenueExemple : une application gérant des documents polymorphes générateur de compo-sants graphiques supportant une multitude de look-and-feels

Page 8: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Prototype

Prototype

Objectif : obtenir une instance d’un objet à partir d’une autre instance

Exemple : drag-and-drop de composants inconnus avec touche Ctrl enfoncée

Page 9: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Singleton

Singleton

Objectif : s’assurer qu’une seule instance d’un type spécifique existe dans le système et fournir l’accès à cet objetExemple : un spooler d’impression

Page 10: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Adapter / Wrapper

Adapter / Wrapper

Objectif : obtenir un objet qui permet d’en utiliser un autre en conformité avec une certaine interfaceExemple : mise en "conformité" de composants d’origines diverses

Page 11: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Proxy / Surrogate

Proxy / Surrogate

Objectif : obtenir un objet qui agit comme intermédiaire dans la communication avec un autre objet (un "passeur d’ordre")Exemples : un objet qui reporte les opérations coûteuses au moment où on utilise réellement les résultats de ces opérations (chargement d’une image à la fin d’un document, …) ; un objet qui transforme une collection en lecture-seule ; …

Page 12: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Composite

Composite

Objectif : manipuler indifférement des objets atomiques ou des agrégats d’objets

Exemple : une application manipulant des formes graphiques et des compositions de ces formes

Page 13: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Facade

Facade

Objectif : fournir une interface simplifiée et limitée à un système complexe

Exemple : donner accès à des passes spécifiques d’un compilateur

Page 14: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Command

Command

Objectif : réifier une commande en un objet embarquant d’éventuels paramètres

Exemple : uniformiser les différentes méthodes de commande d’un système et gérer l’undo et le redo

Page 15: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Iterator

Iterator

Objectif : permettre d’itérer de manière générique sur les éléments d’une collection, quelle que soit la nature des éléments ou de la collectionExemple : trop naze, on le fait tous les jours

Page 16: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Observer / Listener

Observer / Listener

Objectif : permettre à un objet d’informer d’autres objets qu’il ne connaît pas de l’évolution de son état interneExemple : un bouton à la suite d’un click

Page 17: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Strategy / Policy

Strategy / Policy

Objectif : utiliser de manière non spécifique une collection d’algorithme proches

Exemple : algorithmes de tris de collections de données

Page 18: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

State

State

Objectif : un objet qui change de comportement en fonction de son état interne

Exemple : une socket TCP (état non connectée, connectée, en attente de connection)

Page 19: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Visitor

Visitor

Objectif : découpler une structure des opérations sur cette structure

Exemple : analyses/transformations d’arbres de syntaxe abstraite dans un compilateur

Page 20: Page de garde Introduction aux Design Patterns ISIA, Mars 2003 Yannis.BRES@sophia.inria.fr

Conclusions

Conclusions

Des solutions-recettes adaptables pour des problèmes récurrents

Des propositions de bases pour l’élaboration de solutions plus complexesModèles parfois (souvent ?) triviaux