Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Le design pattern Proxy

Le design pattern Proxy

Thomas Calvet

September 06, 2018
Tweet

More Decks by Thomas Calvet

Other Decks in Programming

Transcript

  1. Le design pattern
    Proxy

    View full-size slide

  2. Définition
    Garantie sans copié collé de Wikipedia
    1

    View full-size slide

  3. Définition générale
    ● « If you do something by proxy, you arrange for someone
    else to do it for you. »
    ● Un proxy est donc un composant qui joue un rôle
    d’entremetteur / intermédiaire entre deux parties.
    ● Exemples les plus évidents : un serveur proxy web et un
    reverse proxy.
    3

    View full-size slide

  4. Définition
    ● C’est un design pattern structurel du GOF (Gang of four).
    ● Un proxy est une classe se substituant à une autre.
    ● Il résout plusieurs types de problèmes : performance,
    sécurité, ajout de comportements.
    4

    View full-size slide

  5. Principes clés
    ● Un proxy doit implémenter la même interface que la classe
    substituée.
    ● Un proxy remplace la classe réelle au moment de son
    utilisation.
    ● L’application ne sait pas qu'elle utilise un proxy.
    ● Un proxy doit utiliser la classe substituée.
    5

    View full-size slide

  6. Protection
    ● Objectif : sécurité.
    ● Protéger et limiter l’accès à la classe substituée.
    ● Un contrôle est effectué avant d’appeler les méthodes de la
    classe substituée.
    8

    View full-size slide

  7. Virtual
    ● Objectif : performance.
    ● Retarder l’instanciation de la classe substituée.
    ● La classe substituée n’est instanciée que lorsque
    l’application en a réellement besoin.
    9

    View full-size slide

  8. Remote
    ● Objectif : partage d’objets entre plusieurs systèmes.
    ● Représenter localement un objet distant.
    ● L’application utilise le proxy comme si l’objet était local,
    sans avoir besoin de savoir qu’il est distant.
    10

    View full-size slide

  9. Smart reference
    ● Objectif : ajout de comportements.
    ● Logguer, cacher, dispatcher un event, etc.
    11

    View full-size slide

  10. !== Decorator
    ● Un décorateur reçoit l’objet substitué lors de son
    instanciation.
    ● Un proxy n'en a pas forcément. Il peut l'instancier lui même,
    l’étendre ou se le faire passer par une méthode.
    ● Un proxy n'instanciera pas toujours l’objet qu’il substitue.
    ● Un décorateur vient toujours ajouter un comportement ou
    une responsabilité.
    ● Un proxy peut avoir d’autres objectifs : protéger, cacher,
    logguer...
    12

    View full-size slide

  11. Exercice
    Pour voir si vous avez suivi
    3

    View full-size slide

  12. MarmitteThon
    ● Le but est d’améliorer la performance de l’application en
    proxifiant le client API tier.
    ● Vous avez le choix entre les différentes méthodes
    d’implémentations.
    ● Ne modifiez pas le client, ni les services, sauf si c’est
    autorisé (cf les commentaires).
    ● Il y a logiquement deux types de proxy à implémenter.
    14

    View full-size slide