Dynamic Proxy는 Proxy Factory에 의해 Runtime시 만들어지는 오브젝트이다.
Proxy Factory에게 Interface 정보만 제공해주면 해당 Interface를 구현한 클래스의 오브젝트를 자동으로 만들어준다.
Dynamic Proxy가 Interface 구현 클래스의 오브젝트는 만들어주지만, Proxy로서 필요한 부가기능 제공 코드는 직접 작성해야 한다.
부가기능은 Proxy 오브젝트와 독립적으로 InvocationHandler를 구현한 오브젝트에 담는다.
InvocationHandler Interface는 다음과 같은 메소드 한 개만 가졌다.
public Object invoke(Object proxy, Method method, Object[] args);
즉, Proxy Factory에게 어떠한 Interface를 제공하면 모든 메서드가 구현된 Dynamic Proxy 오브젝트를 생성해주고, 여기에 InvocationHandler Interface를 구현한 오브젝트를 제공해주면 DynamicProxy가 받는 모든 요청을 InvocationHandler#invoke( ) 메소드로 보내준다.