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!!