Remote Proxy: Possui um representante para um objeto em um endereço de memória diferente
Virtual Proxy: Cria objetos sob demanda
Protection Proxy: Controla o acesso ao objeto original
Smart Reference: Um substituto para o ponteiro original do objeto
Diagrama Proxy
Vantagens do Proxy
Permite deixar transparente o local (endereço) do objeto real.
O consagrado framework Hibernate também utiliza o pattern Proxy, por exemplo, ao fazer o “lazy-loading”, técnica utilizado para acessar o banco de dados apenas quando for necessário
Virtual Proxy : Útil para realizar otimizações, como cache de objetos. Também pode ser implementado rotinas de logs e controle de acesso (segurança).
Contribuição no Projeto
Permitiu criar as agências de carros de acordo com a agência escolhida pelo cliente
Garantiu a integridade do objeto original, uma vez que a Classe ProxyAgencia controla a instanciação das diversas agências.