Accueil🇫🇷Chercher

Proxy (patron de conception)

En programmation, un proxy est un patron de conception.

Proxy en UML

Un proxy est une classe se substituant à une autre classe. Par convention et simplicité, le proxy implémente la même interface que la classe à laquelle il se substitue[1]. L'utilisation de ce proxy ajoute une indirection à l'utilisation de la classe à substituer[1].

Usage

Un proxy est utilisé principalement pour contrôler l'accès aux méthodes de la classe substituée[1]. Il est également utilisé pour simplifier l'utilisation d'un objet « complexe » à la base : par exemple, si l'objet doit être manipulé à distance (via un réseau) ou si l'objet est consommateur de temps[1].

Propriétés

  • Un proxy est un cas particulier du patron de conception Ă©tat ;
  • Un proxy implĂ©mente une et une seule interface (donc ne fournit qu'une seule classe) ;
  • Un Ă©tat peut implĂ©menter un nombre quelconque d'interfaces ;
  • Un Ă©tat est utilisĂ© pour changer dynamiquement d'interface.

Types

Il existe 8 différents types de proxy :

  • Remote proxy : fournit une rĂ©fĂ©rence sur un objet situĂ© sur un espace d'adressage diffĂ©rent, sur la mĂŞme machine ou sur une autre ;
  • Virtual proxy : retarde l'allocation mĂ©moire des ressources de l'objet jusqu'Ă  son utilisation rĂ©elle ;
  • Copy-on-write proxy : fournit une forme de proxy virtuel pour retarder la copie de l'objet jusqu'Ă  demande par la classe utilisatrice, utilisĂ© notamment pour la modification concurrente par diffĂ©rents threads ;
  • Protection (access) proxy : fournit Ă  chaque classe cliente un accès Ă  l'objet avec des niveaux de protection diffĂ©rents ;
  • Firewall proxy : protège l'accès Ă  l'objet par des classes « malveillantes » ou vice-versa ;
  • Synchronization proxy : fournit plusieurs accès Ă  l'objet synchronisĂ© entre diffĂ©rentes classes utilisatrices (cas de threads multiples) ;
  • Smart reference proxy : fournit des actions supplĂ©mentaires Ă  chaque accès Ă  l'objet (compteur de rĂ©fĂ©rences, ...) ;
  • Cache proxy : stocke le rĂ©sultat d'opĂ©rations coĂ»teuse en temps, afin de pouvoir les partager avec les diffĂ©rentes classes utilisatrices .

Références

  1. (en) Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides, Design Patterns : Elements of Reusable Object-Oriented Software, Addison-Wesley, , 395 p. (ISBN 0-201-63361-2, lire en ligne), p. 233-245

Voir aussi

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.