Proxy Pattern

A proxy is an object that has the same interface as another object and is used in place of that other object. It provides a surrogate or placeholder for another object to control access to it. It intends to add a wrapper and delegation to protect the real component from undue complexity.

  • It allows us to create placeholder wrappers for objects
  • A proxy Object allows external access control to the object
  • Implements the same interface as the original object

Use cases

  • Caching remotely accessed data
  • Optimize or pre process data on access
  • Logging
  • Encryption
  • Simulating private and inaccessible properties
  • Data validation
// External API Service function CryptocurrencyAPI() { this.getValue = function (coin) { console.log('Calling External API...') switch (coin) { case 'Bitcoin': return '$8,500' case 'Litecoin': return '$50' case 'Ethereum': return '$175' default: return 'NA' } } } function CryptocurrencyProxy() { this.api = new CryptocurrencyAPI() this.cache = {} this.getValue = function (coin) { if (this.cache[coin] == null) { this.cache[coin] = this.api.getValue(coin) } return this.cache[coin] } } const proxy = new CryptocurrencyProxy() console.log(proxy.getValue('Bitcoin')) console.log(proxy.getValue('Litecoin'))