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.
Top comments (0)