quarta-feira, 6 de junho de 2012

Proxy Pattern



Nome e Classificação do Padrão
Proxy – Padrão Estrutural



Intenção e objetivo
Possui o objetivo de substituir outro objeto para controlar seu acesso, é basicamente uma classe que funciona como uma interface para outra classe podendo se conectar à qualquer coisa à um arquivo, conexão de rede e etc...




Motivação 
Há situações em que o cliente não faz, ou não pode fazer referencia a um objeto diretamente, mas quer ainda interagir com o mesmo.
Um objeto proxy pode agir como intermediário entre o cliente e o objeto no qual ele deseja interagir.
“Serve como uma pessoa autorizada a interagir pela outra”.



Aplicabilidade
Proxies são úteis sempre que há uma necessidade de referenciar de forma mais sofisticada um objeto fornecendo mais consistência do que um simples ponteiro ou uma referência simples pode fornecer.
Remote proxy: representante local para um objeto remoto;
Virtual proxy: cria objetos sob demanda, somente criará esse objetos quando precisar;



Estrutura




Participantes 

O objeto MusicaProxy e o objeto real (MusicaReal) implementam a mesma interface, neste caso chamada de Musica O Proxy encapsula o acesso ao objeto real.



Colaborações

Subject
Interface 
Proxy
Implementa a mesma interface do Real Subject O Proxy encapsula o acesso ao RealSubject.
Real Subject
Implementa a mesma interface do Proxy



Consequência 


Um proxy remoto pode ocultar o fato de que um objeto reside em um espaço de endereçamento diferente;
Um proxy virtual pode implementar otimizações,
como criação de um objeto sob demanda;




Implementação
Processo de um MP3 Player via Web.
A classe principal executa o método play() na classe MusicaProxy que verifica  se a música já foi baixada se sim ele executa o método play() na Classe MúsicaReal e toca a música. O construtor do Objeto MusicaReal carrega a música antes de toca-lá.




Exemplos de Código 

Link do projeto com o padrão Proxy




Usos Conhecidos
O Proxy É muito utilizado pela tecnologia J2EE, pelo objeto ‘javax.ejb.EJBObject’, que representa uma referência remota ao EJB.
O Framework Hibernate também utiliza Proxy em uma técnica utilizada para acessar o banco de dados somente quando for necessário.




Padrões relacionados
Adapter
Decorator




Nenhum comentário:

Postar um comentário