-
It is a proxy which controls access to an object based on access rights. For eg if we have an employee object then it can call certain methods but only Manager can call certain methods on it eg setSalary.
-
We'll use Proxy class by Java where actually the Proxy classes are created at runtime and what we have to do is to create invocation handler for methods.
The best explanation I found for this principle was in Head First Design patterns