« Patrons de conception/Proxy » : différence entre les versions

Contenu supprimé Contenu ajouté
+
Ligne 3 :
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.
L'utilisation de ce proxy ajoute une indirection à l'utilisation de la classe à substituer. Le proxy sert à gérer l'accès à un objet, il agit comme un intermédiaire entre la classe utilisatrice et l'objet.
 
Un proxy est un cas particulier du patron de conception [[../État|État]].
Ligne 13 :
 
Outre l'utilisation principale du proxy (contrôle des accès), ce dernier 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 informatique|réseau]]) ou si l'objet est consommateur de temps.
 
{{À faire|Expliquer les différents types de proxy...}}
 
Il existe différents types de Proxy ayant un comportement ou un rôle différent :
* Remote proxy : Fournitfournir 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 : retarder l'allocation mémoire des ressources de l'objet jusqu'à son utilisation réelle,
* Virtual proxy
* Copy-on-write proxy : 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,
* Copy-on-write proxy
* Protection (access) proxy : fournir à chaque classe cliente un accès à l'objet avec des niveaux de protection différents,
* Firewall proxy : protéger l'accès à l'objet par des classes « malveillantes » ou vice-versa,
* Firewall proxy
* Synchronization proxy : fournir plusieurs accès à l'objet synchronisé entre différentes classes utilisatrices (cas de threads multiples),
* Synchronization proxy
* Smart reference proxy : fournir des actions supplémentaires à chaque accès à l'objet (compteur de références, ...),
* Smart reference proxy
* Cache proxy : stocker le résultat d'opérations coûteuse en temps, afin de pouvoir les partager avec les différentes classes utilisatrices.
 
== Diagramme de classes ==