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

Le design pattern Proxy

Thomas Calvet
September 06, 2018

Le design pattern Proxy

Thomas Calvet

September 06, 2018
Tweet

More Decks by Thomas Calvet

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. 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
  4. 6

  5. 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
  6. 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
  7. 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
  8. !== 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
  9. 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