Proxy
Histórico de revisões
Data | Versão | Descrição | Autor |
---|---|---|---|
19/10/2019 | 0.1 | Abertura do documento | Elias Bernardo |
1 - Introdução
O 5w2h é um checklist de determinadas atividades que precisam ser desenvolvidas com o máximo de clareza possível. Por ser uma ferramenta extremamente versátil, o grupo optou por utizá-la, destrinchando os principais aspectos do pattern Proxy de forma simples e direta.
2 - 5W2H
2.1 What?
Etimologia
Proxy é á a contração da palavra anglo-normanda procuracie, que vem do latin medieval procuratia., e significa algo como:
- Um agente ou substituto autorizado a agir por outra pessoa
- A autoridade para agir por outro; carta de procuração
O Padrão
O Pattern Proxy é um padrão Estrutural definido pelo GoF (Gang of Four). O seu objetivo principal é encapsular um objeto através de um outro objeto que possui a mesma interface, de forma que o segundo objeto, conhecido como “Proxy”, controla o acesso ao primeiro, que é o objeto real.
2.2 When?
O Proxy é utilizado principalmente quando:
- O acesso a um objeto deve ser controlado (Protection Proxies).
- Funcionalidades adicionais devem ser fornecidas ao acessar um objeto (Smart References).
- Você precisa implementar objetos que precisam de muitos recursos, mas você não quer instanciar tais objetos a menos/até que eles sejam requisitados pelo cliente (Virtual Proxies).
Podemos citar ainda os Remote Proxies e as Smart References, que são implementações do proxy que buscam resolver alguns outros problemas como fornecer uma representação local para um objeto que esteja em um espaço de endereço diferente e fornecer um acesso sofisticado a determinados objetos, respectivamente.
2.3 Why?
Às vezes, precisamos da capacidade de controlar o acesso a um objeto. Por exemplo, se precisarmos usar apenas alguns métodos de alguns objetos custosos/pesados, inicializaremos esses objetos quando precisarmos deles completamente. Até esse ponto, podemos usar alguns objetos leves, expondo a mesma interface que os objetos pesados. Esses objetos leves são chamados de proxies e eles instanciam esses objetos pesados quando realmente são necessários; então, usaremos alguns objetos leves.
Essa capacidade de controlar o acesso a um objeto pode ser necessária por vários motivos: controlar quando um objeto caro precisa ser instanciado e inicializado, concedendo direitos de acesso diferentes a um objeto, além de fornecer um meio sofisticado de acessar e referenciar objetos executando em outros processos, em outras máquinas.
2.4 Who?
Linguagens com um pé em programação orientada a objetos, como Java por exemplo.
2.5 How?
Referências
-
[1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994). Design Patterns: Elements of Reusable Object-Oriented Software
-
[2] https://en.wiktionary.org/wiki/proxy
-
[3] https://www.oodesign.com/proxy-pattern.html