Virtual Proxy |
Provide a placeholder for an expensive object and delay its instantiation until it is needed |
Remote Proxy |
Represent an object in a different address space, e.g., access a remote database through a remote proxy |
Protection Proxy |
Control access to the original object based on specific permissions or authentication, e.g., check user access rights before granting access |
Cache Proxy |
Store the result of an expensive operation and return cached results, e.g., cache frequently accessed web pages |
Firewall Proxy |
Protect a network from unauthorized access by filtering incoming and outgoing traffic, e.g., filtering packets |
Smart Reference Proxy |
Add extra behavior when an object is accessed, like reference counting, e.g., keep track of the number of times an object is accessed |
Logging Proxy |
Add logging to an object for debugging or auditing, e.g., log requests made to a web service |
Synchronization Proxy |
Provide thread-safe access to a shared resource, e.g., ensure only one thread can access a shared data structure at a time |