The proxy design pattern
In some applications, developers could face the need to provide access control to objects. This could be due to many reasons. Some of them include hiding implementation details, improving interaction with expensive resources, interfacing with remote resources, caching, providing lazy or eager initialization, and so on. The proxy design pattern helps to achieve these.
Its purpose is to provide an interface to something else that then gets served behind the scenes to the user.
The proxy design pattern is another example of a wrapper. It is pretty similar to the decorator design pattern, but feels more basic and limited. The reason for this is that the relationship between the proxy and the wrapped object is established ...