책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ]

[헤드퍼스트 디자인패턴] 38일차. 503-513pg | 동적 프록시 활용하여 보호 프록시 만들기

D269 2023. 6. 13. 16:50
728x90

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) : 접근 권한을 바탕으로 객체로의 접근을 제어하는 프록시 

 

 

 

 

728x90
반응형