SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Padrões de Projeto

       Padrões Estruturais
                    Proxy
Proxy
• Provê um substituto para um outro objeto
  para controlar o acesso a ele
• Proxy é representante/substituto
• Também conhecido como Surrogate:
  substituto/representante




2             Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                of Reusable OO Software - Gamma
Motivação
• Uma razão para se controlar acesso a um
  objeto é se adiar o “custo” de sua criação
  e inicialização até que realmente se
  precise usá-lo
• Exemplo: editor de documento que pode
  embutir objetos gráficos
    – Grandes imagens (raster) são custosas para
      se criar
    – Abrir 1 doc devem ser uma ação rápida
    – Objeto é criado “sob demanda”, quando a
      imagem se torna visível
3                Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                   of Reusable OO Software - Gamma
Motivação
• O que colocar no lugar?
• Como esconder o fato da criação sob
  demanda para não complicar a
  implementação do editor?
• Como não impactar na renderização e
  formatação do texto?



4            Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
               of Reusable OO Software - Gamma
Motivação
• Solução: usar um outro objeto (proxy), que aja
  como se fosse a imagem e se encarrega de
  instanciá-la, quando a mesma for requerida (e
  manter uma referência para a mesma para
  redirecionar futuras requisições)




5               Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                  of Reusable OO Software - Gamma
Motivação




6   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
      of Reusable OO Software - Gamma
Aplicação
•   Sempre que haja a necessidade de uma
    referência a um objeto mais versátil e
    sofisticada do que um simples ponteiro:
    1. Um proxy remoto provê um representante
       local para um objeto em um espaço de
       endereçamento diferente
    2. Um proxy virtual cria objetos “caros” sob
       demanda


7                Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                   of Reusable OO Software - Gamma
Aplicação
    3. Um proxy de proteção controla o acesso ao objeto
       original
       –   útil quando objetos devem ter direitos de acesso diferentes
    4. Uma referência esperta é um substituto para um
       ponteiro que realiza ações adicionais quando um
       objeto é acessado, ex:
       –   Para contar o número de referências ao objeto real com o
           propósito de garbage collection (também conhecido como
           ponteiro esperto)
       –   Para carregar um objeto persistente na memória quando
           ele é referenciado a primeira vez
       –   Para checar que o objeto real está travado antes que ele
           seja acessado, assegurando que nenhum outro objeto o
           altere
8                     Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                        of Reusable OO Software - Gamma
Estrutura




9   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
      of Reusable OO Software - Gamma
Estrutura




10   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Participantes
• Proxy (ImageProxy)
     – Mantém uma referência que permite o proxy
       acessar o objeto real
     – Provê uma interface idêntica a de Subject
       para que o proxy possa substituir o objeto
       real
     – Controla o acesso ao objeto real e pode ser
       responsável pela criação e remoção do
       mesmo

11                Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                    of Reusable OO Software - Gamma
Participantes
     – Outras responsabilidades dependem do tipo de
       proxy:
        • Remote proxies
        • Virtual proxies
        • Protection proxies
• Subject (Graphic)
     – Define a interface comum para RealSubject e Proxy,
       para que um Proxy possa ser usado em qualquer
       lugar que um RealSubject seja esperado
• RealSubject (Image)
     – Define o objeto real que o proxy representa

12                     Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                         of Reusable OO Software - Gamma
Colaborações
• Proxy encaminha as requisições para o
  RealSubject quando apropriado,
  dependendo do tipo de proxy




13            Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                of Reusable OO Software - Gamma
Conseqüências
• Adiciona 1 nível de indireção. O uso da mesma depende do
  tipo:
     – Remote proxy: esconde o fato do objeto real residir em um
       espaço de enderaçamento diferente
     – Virtual proxy: provê otimizações, tais como criar um objeto
       sob demanda
     – Protection Proxy e Smart References: permitem tarefas
       “caseiras” adicionais qdo um obj é acessado
• Outra otimização: copy-on-write


14                     Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                         of Reusable OO Software - Gamma
Implementação
• Sobrecarga do operador de acesso a membro
     em C++ ( ->):
     ✗   Permite realizar tarefas adicionais sempre que um
         objeto é referenciado ( o proxy se comporta como um
         ponteiro )




15                     Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
                         of Reusable OO Software - Gamma
Implementação




16    Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
        of Reusable OO Software - Gamma
Implementação




17    Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
        of Reusable OO Software - Gamma
Exemplo: Virtual Proxy




18        Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
            of Reusable OO Software - Gamma
Exemplo




19   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Exemplo




20   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Exemplo




21   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Exemplo




22   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Exemplo




23   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma
Exemplo




24   Livro Texto: Design Pattern - Elements   Eduardo N. F. Zagari
       of Reusable OO Software - Gamma

Mais conteúdo relacionado

Destaque

História da igreja batista no brasil
História da igreja batista no brasilHistória da igreja batista no brasil
História da igreja batista no brasilHaroldo Xavier Silva
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorEduardo Nicola F. Zagari
 
WP Sandbox Presentation WordCamp Toronto 2011
WP Sandbox Presentation WordCamp Toronto 2011WP Sandbox Presentation WordCamp Toronto 2011
WP Sandbox Presentation WordCamp Toronto 2011Alfred Ayache
 
Community Media 2.0:
Community Media 2.0:  Community Media 2.0:
Community Media 2.0: Felicia
 
Press release: ista acquire Brunata Varmemåler Service AS in Bergen
Press release: ista acquire Brunata Varmemåler Service AS in BergenPress release: ista acquire Brunata Varmemåler Service AS in Bergen
Press release: ista acquire Brunata Varmemåler Service AS in BergenEspen Karlsholmen
 
3058.boletin9
3058.boletin93058.boletin9
3058.boletin9bravolili
 
Memoria final programa de sanacion 2015
Memoria final programa de sanacion 2015Memoria final programa de sanacion 2015
Memoria final programa de sanacion 2015Almudena Armentia
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryEduardo Nicola F. Zagari
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonEduardo Nicola F. Zagari
 

Destaque (20)

ICC-07 Softwares - Introdução
ICC-07 Softwares - IntroduçãoICC-07 Softwares - Introdução
ICC-07 Softwares - Introdução
 
Trabalho sobre Proxy
Trabalho sobre ProxyTrabalho sobre Proxy
Trabalho sobre Proxy
 
História da igreja batista no brasil
História da igreja batista no brasilHistória da igreja batista no brasil
História da igreja batista no brasil
 
Servidor proxy
Servidor proxy Servidor proxy
Servidor proxy
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - Adaptador
 
Padrões-01 - Introdução
Padrões-01 - IntroduçãoPadrões-01 - Introdução
Padrões-01 - Introdução
 
WP Sandbox Presentation WordCamp Toronto 2011
WP Sandbox Presentation WordCamp Toronto 2011WP Sandbox Presentation WordCamp Toronto 2011
WP Sandbox Presentation WordCamp Toronto 2011
 
Community Media 2.0:
Community Media 2.0:  Community Media 2.0:
Community Media 2.0:
 
Micro labo ii final 2011 ii
Micro labo ii  final 2011 iiMicro labo ii  final 2011 ii
Micro labo ii final 2011 ii
 
Memoria ram
Memoria ramMemoria ram
Memoria ram
 
Pasien asuh lentera
Pasien asuh lenteraPasien asuh lentera
Pasien asuh lentera
 
Press release: ista acquire Brunata Varmemåler Service AS in Bergen
Press release: ista acquire Brunata Varmemåler Service AS in BergenPress release: ista acquire Brunata Varmemåler Service AS in Bergen
Press release: ista acquire Brunata Varmemåler Service AS in Bergen
 
Isi Publi3
Isi Publi3Isi Publi3
Isi Publi3
 
3058.boletin9
3058.boletin93058.boletin9
3058.boletin9
 
Memoria final programa de sanacion 2015
Memoria final programa de sanacion 2015Memoria final programa de sanacion 2015
Memoria final programa de sanacion 2015
 
Ellas también juegan
Ellas también jueganEllas también juegan
Ellas también juegan
 
Programa Semanas de la Ciencia 2014
Programa Semanas de la Ciencia 2014Programa Semanas de la Ciencia 2014
Programa Semanas de la Ciencia 2014
 
Вебинар по Advantech boxPC для IPC2U
Вебинар по Advantech boxPC для IPC2UВебинар по Advantech boxPC для IPC2U
Вебинар по Advantech boxPC для IPC2U
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract Factory
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - Singleton
 

Semelhante a Padrões de Projeto: Proxy

Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadePadrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadeEduardo Nicola F. Zagari
 
Padrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodPadrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodEduardo Nicola F. Zagari
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Palestra Iniciando o desenvolvimento de aplicativos com o Club do Android
Palestra Iniciando o desenvolvimento de aplicativos com o Club do AndroidPalestra Iniciando o desenvolvimento de aplicativos com o Club do Android
Palestra Iniciando o desenvolvimento de aplicativos com o Club do AndroidMessias Batista
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerEduardo Nicola F. Zagari
 
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção - Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção - Pedro de Vasconcellos
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: IntroduçãoJugVale
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingPriscila Mayumi
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma AndroidÉdipo Souza
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoaO novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoaMessias Batista
 

Semelhante a Padrões de Projeto: Proxy (20)

Proxygfhfg
ProxygfhfgProxygfhfg
Proxygfhfg
 
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadePadrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
 
Padrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodPadrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory Method
 
Apresentação seminario padrao_proxy
Apresentação seminario padrao_proxyApresentação seminario padrao_proxy
Apresentação seminario padrao_proxy
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Padrões-07 - Padrões Criacionais
Padrões-07 - Padrões CriacionaisPadrões-07 - Padrões Criacionais
Padrões-07 - Padrões Criacionais
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Framework 7 pdf
Framework 7 pdfFramework 7 pdf
Framework 7 pdf
 
Palestra Iniciando o desenvolvimento de aplicativos com o Club do Android
Palestra Iniciando o desenvolvimento de aplicativos com o Club do AndroidPalestra Iniciando o desenvolvimento de aplicativos com o Club do Android
Palestra Iniciando o desenvolvimento de aplicativos com o Club do Android
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - Broker
 
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção - Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
Design de Interação - Capítulo 8 - Design, Prototipação e Construção -
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Padrões de projeto
Padrões de projetoPadrões de projeto
Padrões de projeto
 
Sistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computingSistemas de recomendações e neo4J na cloud computing
Sistemas de recomendações e neo4J na cloud computing
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Introdução a Plataforma Android
Introdução a Plataforma AndroidIntrodução a Plataforma Android
Introdução a Plataforma Android
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoaO novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
O novo desenvolvedor android conceitos básicos e a comunidade em joão pessoa
 

Mais de Eduardo Nicola F. Zagari

Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasOnix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasEduardo Nicola F. Zagari
 
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSUma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSEduardo Nicola F. Zagari
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxEduardo Nicola F. Zagari
 
Módulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealMódulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealEduardo Nicola F. Zagari
 
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Eduardo Nicola F. Zagari
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Eduardo Nicola F. Zagari
 
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Eduardo Nicola F. Zagari
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelEduardo Nicola F. Zagari
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCEduardo Nicola F. Zagari
 
Padrões-03 - Padrões Arquiteturais - Pipes e Filtros
Padrões-03 - Padrões Arquiteturais - Pipes e FiltrosPadrões-03 - Padrões Arquiteturais - Pipes e Filtros
Padrões-03 - Padrões Arquiteturais - Pipes e FiltrosEduardo Nicola F. Zagari
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasEduardo Nicola F. Zagari
 

Mais de Eduardo Nicola F. Zagari (20)

Classificação de Documentos
Classificação de DocumentosClassificação de Documentos
Classificação de Documentos
 
Uma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDBUma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDB
 
Introdução à Linguagem Ruby
Introdução à Linguagem RubyIntrodução à Linguagem Ruby
Introdução à Linguagem Ruby
 
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasOnix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
 
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSUma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes Linux
 
Módulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealMódulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo Real
 
Módulo de Estudos em Tempo Real
Módulo de Estudos em Tempo RealMódulo de Estudos em Tempo Real
Módulo de Estudos em Tempo Real
 
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
 
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - Microkernel
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Padrões-03 - Padrões Arquiteturais - Pipes e Filtros
Padrões-03 - Padrões Arquiteturais - Pipes e FiltrosPadrões-03 - Padrões Arquiteturais - Pipes e Filtros
Padrões-03 - Padrões Arquiteturais - Pipes e Filtros
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 
ICC-01 História dos Computadores
ICC-01 História dos ComputadoresICC-01 História dos Computadores
ICC-01 História dos Computadores
 
ICC-02 Evolução dos Computadores
ICC-02 Evolução dos ComputadoresICC-02 Evolução dos Computadores
ICC-02 Evolução dos Computadores
 
ICC-03 Organização dos Computadores
ICC-03 Organização dos ComputadoresICC-03 Organização dos Computadores
ICC-03 Organização dos Computadores
 
ICC-04 Sistemas Numéricos
ICC-04 Sistemas NuméricosICC-04 Sistemas Numéricos
ICC-04 Sistemas Numéricos
 
ICC-05 Álgebra Booleana
ICC-05 Álgebra BooleanaICC-05 Álgebra Booleana
ICC-05 Álgebra Booleana
 

Padrões de Projeto: Proxy

  • 1. Padrões de Projeto Padrões Estruturais Proxy
  • 2. Proxy • Provê um substituto para um outro objeto para controlar o acesso a ele • Proxy é representante/substituto • Também conhecido como Surrogate: substituto/representante 2 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 3. Motivação • Uma razão para se controlar acesso a um objeto é se adiar o “custo” de sua criação e inicialização até que realmente se precise usá-lo • Exemplo: editor de documento que pode embutir objetos gráficos – Grandes imagens (raster) são custosas para se criar – Abrir 1 doc devem ser uma ação rápida – Objeto é criado “sob demanda”, quando a imagem se torna visível 3 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 4. Motivação • O que colocar no lugar? • Como esconder o fato da criação sob demanda para não complicar a implementação do editor? • Como não impactar na renderização e formatação do texto? 4 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 5. Motivação • Solução: usar um outro objeto (proxy), que aja como se fosse a imagem e se encarrega de instanciá-la, quando a mesma for requerida (e manter uma referência para a mesma para redirecionar futuras requisições) 5 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 6. Motivação 6 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 7. Aplicação • Sempre que haja a necessidade de uma referência a um objeto mais versátil e sofisticada do que um simples ponteiro: 1. Um proxy remoto provê um representante local para um objeto em um espaço de endereçamento diferente 2. Um proxy virtual cria objetos “caros” sob demanda 7 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 8. Aplicação 3. Um proxy de proteção controla o acesso ao objeto original – útil quando objetos devem ter direitos de acesso diferentes 4. Uma referência esperta é um substituto para um ponteiro que realiza ações adicionais quando um objeto é acessado, ex: – Para contar o número de referências ao objeto real com o propósito de garbage collection (também conhecido como ponteiro esperto) – Para carregar um objeto persistente na memória quando ele é referenciado a primeira vez – Para checar que o objeto real está travado antes que ele seja acessado, assegurando que nenhum outro objeto o altere 8 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 9. Estrutura 9 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 10. Estrutura 10 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 11. Participantes • Proxy (ImageProxy) – Mantém uma referência que permite o proxy acessar o objeto real – Provê uma interface idêntica a de Subject para que o proxy possa substituir o objeto real – Controla o acesso ao objeto real e pode ser responsável pela criação e remoção do mesmo 11 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 12. Participantes – Outras responsabilidades dependem do tipo de proxy: • Remote proxies • Virtual proxies • Protection proxies • Subject (Graphic) – Define a interface comum para RealSubject e Proxy, para que um Proxy possa ser usado em qualquer lugar que um RealSubject seja esperado • RealSubject (Image) – Define o objeto real que o proxy representa 12 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 13. Colaborações • Proxy encaminha as requisições para o RealSubject quando apropriado, dependendo do tipo de proxy 13 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 14. Conseqüências • Adiciona 1 nível de indireção. O uso da mesma depende do tipo: – Remote proxy: esconde o fato do objeto real residir em um espaço de enderaçamento diferente – Virtual proxy: provê otimizações, tais como criar um objeto sob demanda – Protection Proxy e Smart References: permitem tarefas “caseiras” adicionais qdo um obj é acessado • Outra otimização: copy-on-write 14 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 15. Implementação • Sobrecarga do operador de acesso a membro em C++ ( ->): ✗ Permite realizar tarefas adicionais sempre que um objeto é referenciado ( o proxy se comporta como um ponteiro ) 15 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 16. Implementação 16 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 17. Implementação 17 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 18. Exemplo: Virtual Proxy 18 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 19. Exemplo 19 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 20. Exemplo 20 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 21. Exemplo 21 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 22. Exemplo 22 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 23. Exemplo 23 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 24. Exemplo 24 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma