[헤드퍼스트 디자인패턴] 38일차. 503-513pg | 동적 프록시 활용하여 보호 프록시 만들기
38일차
헤드퍼스트 디자인패턴 [7주차_화요일]
503-513pg
요약
**CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)**
사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다.
[ 동적 프록시를 활용하여 보호 프록시 만들기 ]
- java.lang.reflect 패키지에 프록시 기능이 내장되어 있다.
- java.lang.reflect 패키지 사용하면 즉석에서 하나 이상의 인터페이스를 구현하고, 지정한 클래스에 메소드 호출을 전달하는 프록시 클래스를 만들 수 있다.
- 동적 프록시(dynamic proxy) : 진짜 프록시는 실행 중에 생성되는 자바 기술
- 자바에서 Proxy 클래스를 생성해주고, Proxy 클래스에게 무슨 일을 해야하는 지 알려 줄 코드는 InvocationHandler에 넣으면 된다. InvocationHandler는 프록시에 호출되는 모든 메소드에 응답한다.
- 예) 다른 고객의 정보를 마음대로 바꿀 수 없게 하고 싶을 때 보호 프록시(Protection Proxy)를 사용한다.
- 보호 프록시(Protection Proxy) : 접근 권한을 바탕으로 객체로의 접근을 제어하는 프록시
- 동적 프록시 만드는 단계 (여기서는 예시로, 하나는 본인의 person 객체에 접근, 다른 하나는 다른 사람의 person 객체에 접근 하는 프록시 두 가지 만든다.)
1단계. 2개의 InvocationHandler 만들기
2단계. 동적 프록시 생성 코드 만들기
3단계. 적절한 프록시로 Person 객체 감싸기
1단계. 2개의 InvocationHandler 만들기
한 개는 본인용 핸들러, 다른 하나는 타인용 핸들러.
- 호출 핸들러는 프록시가 호출 했을 때 그 호출을 처리하는 방법을 어떻게 알까?
-> OwnerInvocationHandller 구현해보면서 살펴보기.
2단계. 동적 프록시 생성코드 만들기
Person 객체를 인자로 받고 본인용 프록시를 만드는 메소드를 만든다.
-> 메소드 호출을 OwnerInvocationHandler에게 넘겨주는 프록시 만들기.
발췌
동적 프록시(dynamic proxy) : 진짜 프록시는 실행 중에 생성되는 자바 기술
보호 프록시(Protection Proxy) : 접근 권한을 바탕으로 객체로의 접근을 제어하는 프록시