닭발개발

[헤드퍼스트 디자인패턴] 37일차. 488-502pg 본문

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

[헤드퍼스트 디자인패턴] 37일차. 488-502pg

D269 2023. 6. 12. 15:05
728x90

37일차


헤드퍼스트 디자인패턴 [7주차_월요일]
488-502pg


요약

 

**CHAPTER 11. 객체 접근 제어하기 (feat. 프록시 패턴)**

사람들이 좋은 경찰에 접근하는 일을 나쁜 경찰이 제어한다. 패턴에서 나쁜 경찰은 프록시(proxy)이다. 접근을 제어하고 관리한다. 

 

[ 신나는 프록시의 하루 - 프록시의 일 처리과정 살펴보기 ]

1. CEO 모니터링 시작 -> GumballMonitor는 뽑기 기계 원격 객체의 프록시를 가져옴 -> getState(), getCount(), getLocation() 호출

2. 프록시의 getState() 호출 -> 프록시는 이 호출을 원격 서비스로 전달 -> 스켈레톤을 그 요청을 받아서 뽑기기계에 전달

3. GumballMachine은 스켈레톤에게 상태를 리턴 -> 스켈리톤은 리턴값을 직렬화 -> 네트워크로 프록시에게 직렬화한 리턴값 전달 -> 프록시는 리턴값을 역직렬화 -> GumballMonitor에게 리턴

 

[ 프록시 패턴 정의 ]

- 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공한다.

- 프록시 패턴을 사용하면 원격 객체라든가 생성하기 힘든 객체, 보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리인 객체를 만들 수 있다.

- 실전에는 프록시 패턴의 변종이 더욱 많다. 모든 변종의 공통점은 클라이언트가 실제 객체의 메소드를 호출하면, 그 호출을 중간에 가로챈다는 점.

 

[ 프록시에서 접근을 제어하는 방법 ]

1. 원격 프록시를 써서 원격 객체로의 접근을 제어할 수 있다.

2. 가상 프록시(virtual proxy)를 써서 생성하기 힘든 자원으로의 접근을 제어할 수 있다.

3. 보호 프록시(protection proxy)를 써서 접근 권한이 필요한 자원으로의 접근을 제어할 수 있다.

 

[ 원격 프록시 | 가상 프록시 ]

1. 원격 프록시 

- 다른 JVM에 들어있는 객체의 대리인에 해당하는 로컬 객체.

- 프록시의 메소드를 호출하면 그 호출이 네트워크로 전달되어 결국 원격 객체의 메소드가 호출된다.

2. 가상 프록시

- 생성하는 데 많은 비용이 드는 객체를 대신한다.

- 진짜 객체가 필요한 상황이 오기 전까지 객체의 생성을 미루는 기능을 제공한다.

 

 

 

 

 

 

발췌

프록시 패턴 : 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공한다.

 

 

 

 

 

 

 

728x90
반응형