Provide a surrogate or placeholder for another object to control access to it.
- Remote proxies can hide hide the fact that a real object is in another address space.
- Virtual proxies can create expensive objects on demand.
- Protection proxies can control access to an object.
- Smart references can preform additional action above a simple pointer.