SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOAndré Victor
 
Junit mockito and PowerMock in Java
Junit mockito and  PowerMock in JavaJunit mockito and  PowerMock in Java
Junit mockito and PowerMock in JavaAnkur Maheshwari
 
Taiko - Reliable Browser Automation
Taiko - Reliable Browser AutomationTaiko - Reliable Browser Automation
Taiko - Reliable Browser AutomationHarmeet Singh
 
Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLClaudio Martins
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosArthur Emanuel
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
 

La actualidad más candente (20)

POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
JAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTOJAVA - ENCAPSULAMENTO
JAVA - ENCAPSULAMENTO
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Junit mockito and PowerMock in Java
Junit mockito and  PowerMock in JavaJunit mockito and  PowerMock in Java
Junit mockito and PowerMock in Java
 
Taiko - Reliable Browser Automation
Taiko - Reliable Browser AutomationTaiko - Reliable Browser Automation
Taiko - Reliable Browser Automation
 
Modelagem Aplicações Web com UML
Modelagem Aplicações Web com UMLModelagem Aplicações Web com UML
Modelagem Aplicações Web com UML
 
Robot framework and selenium2 library
Robot framework and selenium2 libraryRobot framework and selenium2 library
Robot framework and selenium2 library
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
 
Banco de Dados
Banco de DadosBanco de Dados
Banco de Dados
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Interfaces e polimorfismo
Interfaces e polimorfismoInterfaces e polimorfismo
Interfaces e polimorfismo
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 

Destacado

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
 

Destacado (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
 

Similar a Padrões-13 - Padrões Estruturais - 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
 

Similar a Padrões-13 - Padrões Estruturais - 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
 

Más 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
 

Más 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
 

Último

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (9)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Padrões-13 - Padrões Estruturais - 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