Padrão Proxy
Projeto de Sistemas de Software(PSS)
Marcio D. M. Santos
Baldoino F. dos S. Neto
Propósito
• Prover um representante para um objeto
real que controla tal objeto. Desta forma,
não arcando com as conseqüências de
controlar o objeto real diretamente.
© LES/PUC-Rio
Motivação
• Custo elevado em criar ou instanciar um
tipo de objeto.
• Controle de acesso.
• Exemplo
– Carregamento de grandes imagens
© LES/PUC-Rio
Aplicabilidade
• É aplicável quando necessitamos de uma
referência mais sofisticada para um
objeto, ou seja, precisamos de algo mais
do que um simples ponteiro.
© LES/PUC-Rio
Aplicabilidade
• Remote proxy (RMI e CORBA)
• Referência esperta
(lazyload(hibernate,jpa))
• Virtual proxy(imagem em documentos)
• Protection Proxy(acesso restrito)
© LES/PUC-Rio
Estrutura
© LES/PUC-Rio
Participantes
• Proxy
– Mantém uma referência que permite o acesso ao
objeto real.
– Possui uma interface idêntica ao Subject.
– Controla o acesso ao objeto real.
• Subject
– Define uma comum interface para RealSubject e
Proxy.
• RealSubject
– Define o objeto real que o proxy representa.
© LES/PUC-Rio
Colaborações
•O proxy invoca o objeto real somente
quando é invocado.
© LES/PUC-Rio
Conseqüências
• Adiciona um nível de indireção
– Permite que o objeto resida em um outro
servidor
– Permite que o objeto seja carregado da base
somente quando necessário
• Esconde a forma de acesso podendo
causar erros não previstos na API do
objeto.
© LES/PUC-Rio
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
Exemplo
© LES/PUC-Rio
Exemplo
Exemplo
Exemplo
FIM!!
Download

Slides - (LES) da PUC-Rio