Voici la citation directe du GoF (page 216).
Bien que les décorateurs puissent avoir des implémentations similaires à celles des proxies, les décorateurs ont un objectif différent. Un décorateur ajoute une ou plusieurs responsabilités à un objet, alors qu'un proxy contrôle l'accès à un objet.
Les mandataires varient dans la mesure où ils sont mis en œuvre comme un décorateur. A protection peut être implémenté exactement comme un décorateur. En revanche, un proxy En revanche, un proxy distant ne contiendra pas de référence directe à son sujet réel, mais seulement une référence indirecte. une référence indirecte, telle que "l'identifiant de l'hôte et l'adresse locale de l'hôte". Un proxy virtuel commencera par une référence indirecte, telle qu'un nom de fichier, mais pourra éventuellement obtenir et utiliser une référence directe.
Les réponses populaires indiquent qu'un Proxy connaît le type concret de son délégué. D'après cette citation, nous pouvons voir que ce n'est pas toujours vrai.
La différence entre le mandataire et le décorateur selon le GdF est que le mandataire restreint le client. Le décorateur ne le fait pas. Le mandataire peut restreindre ce qu'un client fait en contrôlant l'accès à la fonctionnalité ; ou il peut restreindre ce qu'un client connaît en effectuant des actions qui sont invisibles et inconnues du client. Le décorateur fait le contraire : il améliore ce que fait son délégué d'une manière visible pour les clients.
On pourrait dire que le Proxy est une boîte noire alors que le Decorator est une boîte blanche.
La relation de composition entre le wrapper et le délégué est la mauvaise relation sur laquelle se concentrer lorsqu'on oppose le Proxy au Decorator, car la composition est la caractéristique que ces deux modèles ont en commun. La relation entre le wrapper et le client est ce qui différencie ces deux modèles.
- Decorator informe et responsabilise son client.
- Le mandataire restreint et prive son client de ses droits.