Padrão Proxy
Higor Diego
Posted on April 7, 2023
A origem do padrão de design proxy remonta aos anos 90, quando o livro "Design Patterns: Elements of Reusable Object-Oriented Software" foi publicado por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides.
Pattern Proxy é um padrão de projeto de software para controlar o acesso a um objeto ou recurso. Ele funciona criando um objeto intermediário, chamado de proxy, que age como um substituto para o objeto real.
O padrão Proxy é útil em situações onde se deseja controlar o acesso a um objeto ou recurso de maneira mais granular, permitindo ou negando o acesso conforme necessário. Alguns casos em que o padrão Proxy pode ser útil incluem:
- Redução do uso de recursos: se um objeto é caro em termos de recursos, como memória ou processamento, o uso de um proxy pode ajudar a reduzir o número de vezes que o objeto é criado ou acessado, melhorando a eficiência do sistema.
- Controle de acesso: o proxy pode ser usado para controlar o acesso a objetos sensíveis ou críticos, permitindo apenas que usuários autorizados tenham acesso a eles. Isso ajuda a garantir a segurança do sistema.
- Gerenciamento de objetos remotos: o proxy remoto é usado para acessar objetos remotos em um sistema distribuído, permitindo que os clientes acessem objetos remotos como se estivessem acessando objetos locais.
- Criação sob demanda: o proxy virtual é usado para criar objetos sob demanda, evitando a criação desnecessária de objetos caros. Isso ajuda a melhorar a eficiência do sistema. Em resumo, o padrão Proxy é útil sempre que há a necessidade de controlar o acesso a um objeto ou recurso de forma mais granular, garantindo a eficiência e a segurança do sistema.
Existem vários tipos de proxy, como o proxy remoto, o proxy virtual e o proxy de proteção. O proxy remoto é usado para acessar objetos remotos em um sistema distribuído, enquanto o proxy virtual é usado para criar objetos sob demanda, evitando a criação desnecessária de objetos caros. Já o proxy de proteção é usado para controlar o acesso a objetos sensíveis ou críticos.
O padrão proxy é um dos padrões de projeto mais populares e amplamente utilizados na programação de software. Ele ajuda a melhorar a eficiência e a segurança do sistema, garantindo um acesso controlado e seguro aos objetos e recursos importantes.
Segue abaixo o exemplo de implementação do padrão Proxy em Node.js com consumo de API REST.
const axios = require('axios');
class CacheProxyApi {
constructor() {
this.url = 'https://api.example.com.br'
this.cache = {};
}
async get(path) {
if (this.cache[path]) {
console.log(`Retrieved data from cache for path: ${path}`);
return Promise.resolve(this.cache[path]);
}
console.log(`Fetching data from API for endpoint: ${path}`);
const response = await axios.get(`${this.url}${path}`);
this.cache[path] = response.data;
return Promise.resolve(response.data);
}
}
module.exports = CacheProxyApi;
Neste exemplo, a classe CacheProxyApi funciona como um proxy para a API externa, armazenando em cache os resultados das chamadas para evitar chamadas desnecessárias à API. O método get é responsável por realizar a chamada à API e retornar os dados. Se o resultado já estiver armazenado em cache, ele será retornado imediatamente.
Para usar o proxy, basta criar uma instância da classe CacheProxyApi e chamar o método get com o endpoint desejado:
const CacheProxyApi = require('./CacheProxyApi');
const cacheProxyApi = new CacheProxyApi();
cacheProxyApi.get('users')
.then(data => console.log(data))
.catch(error => console.error(error));
Neste exemplo, o proxy é usado para buscar dados de usuários da API externa. Se os dados já estiverem armazenados em cache, o proxy os retorna imediatamente, sem realizar uma chamada à API. Se os dados não estiverem em cache, o proxy busca os dados da API e os armazena em cache para uso futuro.
Simples, né ?
O uso do padrão Proxy traz várias vantagens, algumas delas são:
- Controle de acesso: o padrão Proxy permite que o acesso a objetos ou recursos sensíveis seja controlado, permitindo apenas que usuários autorizados acessem esses objetos. Isso ajuda a garantir a segurança do sistema.
- Redução do uso de recursos: o Proxy pode ser usado para reduzir o uso de recursos, evitando a criação desnecessária de objetos caros e reduzindo o número de acessos a objetos remotos, por exemplo. Isso ajuda a melhorar a eficiência do sistema.
- Criação sob demanda: o Proxy virtual é usado para criar objetos sob demanda, evitando a criação desnecessária de objetos caros. Isso ajuda a melhorar a eficiência do sistema e reduzir o uso de recursos.
- Melhora a performance: o uso do Proxy pode ajudar a melhorar a performance do sistema, reduzindo a carga na rede e minimizando o tráfego de dados entre o cliente e o servidor.
- Simplificação do código: o padrão Proxy pode ajudar a simplificar o código, permitindo que os desenvolvedores se concentrem em lógica de negócios específica, em vez de se preocupar com detalhes de implementação de controle de acesso e gerenciamento de recursos.
Conclusão
Em resumo, o padrão Proxy é uma técnica poderosa para melhorar a eficiência, segurança e performance de sistemas, permitindo um controle de acesso mais granular e um gerenciamento mais eficiente de recursos.
Posted on April 7, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
October 20, 2024