The proxy pattern
The proxy design pattern gets its name from the proxy (also known as surrogate) object used to perform an important action before accessing the actual object. There are four different well-known proxy types (j.mp/proxypat). They are as follows:
- A remote proxy, which acts as the local representation of an object that really exists in a different address space (for example, a network server).
- A virtual proxy, which uses lazy initialization to defer the creation of a computationally expensive object until the moment it is actually needed.
- A protection/protective proxy, which controls access to a sensitive object.
- A smart (reference) proxy, which performs extra actions when an object is accessed. Examples of such actions are reference counting and thread-safety checks.
I find virtual proxies very useful so let's see an example of how we can implement them in Python right now. In the Implementation section, you will learn how to create protective proxies.
There are many ways to create...