Allows for object level access control by acting as a pass through entity or a placeholder object.
Proxy design pattern is mostly used to wrap some object in order to provide additional functionality while also maintaining the same signature and main functionality of the wrapped object.
This pattern is useful when you need to limit access, add logging before and after each call or cache results of some object.
For more information, Wikipedia provides a great overview of the pattern: Wikipedia Article