프록시 패턴이란?
프록시를 직역하면 "대리인"을 의미한다. 사장님은 비서를 통해서 만나러 갈 수 있다. 여기서 말하는 비서가 Proxy객체와 유사하다고 생각해볼 수 있다. 비서는 만나러 온 사람의 신원을 확인하여 출입을 제한하거나 방명록을 적도록하는 등의 업무를 수행할 수 있다.
즉, 대상 객체에 접근하기 전에 흐름을 가로채 대상 객체 접근에 필요한 부가적인 역할을 구현할 때 사용하는 디자인패턴이다.
프록시 패턴의 장점
- 사이즈가 큰 객체가 다 로딩되기 전에도 프록시를 통해 참조할 수 있다.
- 객체 접근에 대한 전/후처리를 메인로직과 분리해서 작성할 수 있다.
프록시 종류
가상 프록시(Virtual Proxy)
해당 객체가 생성된 것처럼 동작하도록 만듦으로써, 사용 시점까지 객체 생성을 미룰 수 있다.
JPA의 지연 로딩이 이에 해당한다. JPA는 annotation으로 객체들 간에 1:1, 1:N, N:M관계를 맺을 수 있다. 이때 한 객체를 로드하면, 관계 있는 객체는 Proxy로 불러올 수 있다. 해당 데이터를 사용하는 시점에 DB에서 불러오도록 함으로써 메모리를 절약할 수 있다.
원격 프록시(Remote Proxy)
로컬 환경에 있으며, 원격 객체에 대한 접근을 제어할 수 있다. 서로 다른 공간에 있는 객체에 대해 마치 같은 주소 공간에 있는 것처럼 동작하게 한다.
ex) Google Docs
보호 프록시(Protection Proxy)
주체 객체에 대한 접근 권한을 제어
참고 자료
면접을 위한 cs 전공지식 노트