fullstack

[디자인 패턴] 프록시 패턴(Proxy Pattern)

디자인 패턴

- 개념

다른 객체에 대한 접근을 제어하기 위해 대리자 역할을 하는 객체를 두는 패턴

대리자는 일을 처리하고 완료되면 그 결과를 알려준다

대리자 역할을 하는 객체는 흐름 제어만 할 뿐 결과값을 조작할 수 없다


프록시 패턴은 단순 포인터보다 더욱 다방면에 활용할 수 있다

1. 실제 객체를 요청하기 전이나 후에 인가 처리 (보호용 프록시)

2. 자원이 많이 드는 객체에 대해 백그라운드 처리 (가상 프록시)

3. 원격 메소드를 호출하기 위한 작업 (원격 프록시)

4. 실제 객체에 접근이 일어날 때 추가적인 행동을 수행 (스마트 참조자)




- 구현



Proxy는 Subject와 동일한 인터페이스를 제공하며, 실제 대상에 대한 접근을 제어하고 실제 대상의 생성과 삭제를 책임집니다. 그리고 Proxy 종류에 알맞는 요청을 수행합니다

Subject는 공통된 인터페이스를 정의하며, RealSubject가 요청되는 곳에 Proxy를 사용할 수 있게 합니다

Proxy 클래스는 자신이 받은 요청을 RealSubject 객체에 전달합니다




- 관련 패턴

적응자 패턴 (Adapter Pattern) - http://cpp11.tistory.com/57

장식자 패턴 (Decorator Pattern) - http://cpp11.tistory.com/58