designpattern desc + exemple

Upload: hatimas

Post on 07-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 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.