Proxy

Origin: unknown
Reason: It is incovenient to access a service for a variety of reasons, e.g., the object providing the service is quite complex, or may not exist at the time the service is requested (and so it must be created).
Synopsis: Access an object's services indirectly through another object, the proxy. Clients are generally unaware of the proxy's existence.
Example: A hashtable is expensive to clone. Reading into a cloned hashtable gives the same results as reading into the original, until the original is modified. Cloning can be delayed until the cloned hashtable is to become different from the original hashtable.
Solution:
ServiceClass The class providing services. Hashtable
Proxy The class through which the ServiceClass services are accessed.  
ServiceIF Common interface of both ServiceClass and Proxy. say, HashtableIF
See also: Bridge
Decorator
Delegation
Facade
Variations:
Access proxy:   Enforces security policies to access a service object.
Remote proxy:   Hides that a service object is on a remote machine.
Virtual proxy:   Creates perception that a service object exists when it might not.