Proxy pattern
From Freepedia
In computer programming, a proxy pattern is a software design pattern.
A proxy, in its most general form, is a class functioning as an interface to another thing. The other thing could be anything, a network connection, a large object in memory, a file, or other resources that is expensive or impossible to duplicate.
A well-known example of the proxy pattern is a reference counting pointer object, also known as an auto pointer.
The proxy pattern can be used in situations where multiple copies of a complex object must exist. In order to reduce the application's memory footprint in such situations, one instance of the complex object is created, and multiple proxy objects are created, all of which contain a reference to the single original complex object. Any operations performed on the proxies are forwarded to the original object. Once all instances of the proxy are out of scope, the complex object's memory may be deallocated.
Types of Proxy Pattern:
- Remote Proxy: Provides a reference to an object located in a different address space on the same or different machine
- Virtual Proxy: Allows the creation of a memory intensive object on demand. The object will not be created until it is really needed.
- Copy-On-Write Proxy: Defers copying (cloning) a target object until required by client actions. Really a form of virtual proxy.
- Protection (Access) Proxy: Provides different clients with different levels of access to a target object
- Cache Proxy: Provides temporary storage of the results of expensive target operations so that multiple clients can share the results
- Firewall Proxy: Protects targets from bad clients (or vice versa)
- Synchronization Proxy: Provides multiple accesses to a target object
- Smart Reference Proxy: Provides additional actions whenever a target object is referenced such as counting the number of references to the object
See also
- Composite pattern
- Decorator pattern
- Interceptor pattern
- Proxy - the term itself appropriately matches this pattern



