Provide a surrogate or placeholder for another object to control access to it.
Surrogate
Use the Proxy pattern in any of the following situations:
- A remote proxy provides a local representative for an object in a different address space.
- A virtual proxy creates expensive objects on demand.
- A protection proxy controls access to the original object. Protection proxies are useful when objects should have different access rights.