프록시의 장점은 타깃의 기능을 확장하거나 접근 방법을 제어할 수 있지만
단점으로는
1. 인터페이스를 구현하는 프록시 클래스를 매번 정의해야 하며 인터페이스 메서드 구현과 위임 코드도 전부 만들어줘야 한다.
2. 부가기능 코드 중복
다이나믹 프록시는 프록시 오브젝트를 구현할 때 단점을 보완해준다.
java.lang.reflect
패키지에 프록시처럼 동작하는 오브젝트를 다이나믹하게 생성해주는 기능을 제공하는 클래스들이 있다. → JDK 다이내믹 프록시
Proxy
클래스의 newProxyInstance()
를 사용하면 된다.
newProxyInstance()
파라미터loader
: 동적으로 생성되는 다이나믹 클래스의 로딩에 사용할 클래스 로더interfaces
: 구현할 타깃의 인터페이스h
: 부가기능과 위임 코드를 담은 핸들러InvocationHandler
인터페이스invoke()
메서드로 보낸다.
감사합니다. 이런 정보를 나눠주셔서 좋아요.