O Proxy é um padrão de projeto estrutural que fornece um objeto que atua como um substituto para um objeto de serviço real usado por um cliente. Um proxy recebe solicitações do cliente, realiza alguma tarefa (controle de acesso, armazenamento em cache etc.) e passa a solicitação para um objeto de serviço.
O objeto proxy tem a mesma interface que um serviço, o que o torna intercambiável com um objeto real quando passado para um cliente.
Exemplos de uso: Embora o padrão Proxy não seja um convidado frequente na maioria das aplicações C#, ele ainda é muito útil em alguns casos especiais. É insubstituível quando você deseja adicionar alguns comportamentos adicionais a um objeto de alguma classe existente sem alterar o código cliente.
Identificação: Proxies delegam todo o trabalho real para algum outro objeto. Cada método de proxy deve, no final, se referir a um objeto de serviço, a menos que o proxy seja uma subclasse de um serviço.
Exemplo conceitual
Este exemplo ilustra a estrutura do padrão de projeto Proxy. Ele se concentra em responder a estas perguntas:
De quais classes ele consiste?
Quais papéis essas classes desempenham?
De que maneira os elementos do padrão estão relacionados?