Proxy (patron de conception)

En programmation, un proxy est un patron de conception.

Pour l’article ayant un titre homophone, voir Proxy (homonyme).

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

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.