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

Le design pattern Proxy

Le design pattern Proxy

A7e7c34aaa3ff7eb359b6449fb8bb043?s=128

Thomas Calvet

September 06, 2018
Tweet

Transcript

  1. Le design pattern Proxy

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

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

  7. Les types 2

  8. 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
  9. 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
  10. 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
  11. Smart reference • Objectif : ajout de comportements. • Logguer,

    cacher, dispatcher un event, etc. 11
  12. !== 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
  13. Exercice Pour voir si vous avez suivi 3

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