Slide 1

Slide 1 text

Le design pattern Proxy

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

Les types 2

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

!== 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

Slide 13

Slide 13 text

Exercice Pour voir si vous avez suivi 3

Slide 14

Slide 14 text

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