LE PATTERN DE CONCEPTION
PROXY
P R É S E N TAT I O N
PROGRAMME
Introduction
Définition du Pattern Proxy
Implémentation en Java
Avantages & Inconvénients
Types de Proxys
Conclusion
INTRODUCTION
Dans les systèmes logiciels, il est souvent
nécessaire de contrôler l’accès à un
objet ou d’y ajouter des fonctionnalités
(comme la sécurité, ou la journalisation) sans
modifier son code source.
Le pattern Proxy répond à ce besoin en
agissant comme un intermédiaire entre le
client et l’objet réel.
3
CAS D’USAGE COURANTS :
• Accès sécurisé à une base de données.
• Chargement différé (lazy loading) d’objets
coûteux.
• Communication avec des services distants
(RPC, APIs).
4
DÉFINITION
"Le Proxy est un patron de conception structurel qui
fournit un substitut à un autre objet pour en contrôler
l’accès."
Autrement dit :
•Un objet Proxy sert de remplaçant à l’objet réel.
•Il intercepte les requêtes du client et décide
quand/pourquoi les transmettre à l’objet réel.
5
PRINCIPE DE FONCTIONNEMENT
Le Proxy repose
Interface Sujet
sur 3 composants :
•Définit les méthodes communes au Proxy et
au Sujet Réel.
1. Interface Sujet
Sujet Réel
2. Sujet Réel •Implémente la logique métier (ex: accès direct
3. Proxy à la base de données).
•Proxy
• Contient une référence vers le sujet réel.
• Ajoute des comportements avant/après
l’appel au sujet réel (ex: vérification des
droits, journalisation).
6
EXEMPLE CONCRET - PROXY D'IMAGE
Scénario :
"Une application gallery qui optimise le chargement
des photos lourdes"
Fonctionnement :
[Link] client utilise proxy image au lieu de real image
2.L'image réelle n'est chargée que lors du premier
affichage
[Link] appels suivants réutilisent l'image déjà
chargée
7
DIAGRAMME DE
CLASSES UML
PLONGÉE DANS LE
CODE
INTERFACE IMAGE
11
LA CLASSE REALIMAGE
12
LA CLASSE PROXYIMAGE
13
LE CODE CLIENT
14
AVANTAGES
• Contrôle d'accès granulaire : Sécurité (ex: vérification
des permissions)
• Optimisation des ressources :
• Lazy loading (chargement différé)
• Cache des objets coûteux
• Découplage : Le client ne dépend pas directement du sujet
réel
• Extensibilité : Ajout de fonctionnalités (logs, monitoring)
sans modifier l'objet original
15
INCONVÉNIENTS :
• Overhead : Légère latence due à l'intermédiaire
• Complexité accrue : Ajout d'une couche
supplémentaire au code
• Débogage difficile : Comportement moins
transparent (le Proxy masque des opérations)
16
CONCLUSION :
Pourquoi utiliser le Proxy ?
• Quand vous avez besoin de :
• Contrôler l'accès à un objet (sécurité, coût élevé)
• Optimiser les performances (lazy loading, caching)
• Travailler avec des objets distants (RPC, APIs)
Domaines d'application :
• Applications multimédias (chargement d'images/vidéos)
• Systèmes distribués (proxys réseau)
• ORM (Hibernate, Entity Framework) pour le lazy loading
17
MERCI
Réalisé par :
ZAKARIYA ZAKAR
AMINE ELMOUMEN
ILYASS R’BAAI