Proxy
Catégorie
Pattern structurel
Problème
Fournir un substitut ou un substitut pour un autre objet afin de contrôler l’accès à celui-ci. Utile lorsque l’accès direct est inapproprié en raison du coût, de la sécurité ou de la complexité.
Solution
- Créer une classe Proxy qui implémente la même interface que le vrai sujet
- Le Proxy contrôle l’accès au vrai sujet, ajoutant son propre comportement
- Le Proxy peut initialiser paresseusement, mettre en cache ou ajouter des vérifications de sécurité
Structure
- Subject : Interface pour le RealSubject et le Proxy
- RealSubject : L’objet réel que le Proxy représente
- Proxy : Maintient une référence au RealSubject ; contrôle l’accès ; ajoute des fonctionnalités
- Client : Utilise l’interface Subject ; ne sait pas qu’il utilise un Proxy
Avantages clés
- Accès contrôlé — Peut ajouter de la sécurité, du cache ou de l’initialisation paresseuse
- Transparence — Le client interagit avec le Proxy comme s’il était l’objet réel
- Accès distant — Les Proxies permettent l’accès à des objets dans différents espaces d’adressage
Compromis
- Ajoute une couche supplémentaire qui peut introduire une surcharge de performance
- Peut devenir complexe avec plusieurs types de Proxy
Quand l’utiliser
- Vous avez besoin d’une référence plus contrôlée ou sophistiquée à un objet qu’un simple pointeur
- Vous voulez charger paresseusement des objets coûteux
- Vous avez besoin d’ajouter du cache, de la journalisation ou du contrôle d’accès