디자인 패턴/구조 패턴
Proxy 패턴
언린이
2021. 9. 5. 11:46
Proxy 패턴은 Proxy 객체를 통해 기본 객체에 접근하는 패턴입니다.
구조
- Subject
- Proxy와 RealSubject가 구현해야하는 인터페이스입니다.
- 두 객체를 동일하게 다루기 위해 존재합니다.
- Proxy
- RealSubject와 Client 요청 사이에 존재하는 객체입니다.
- Subject를 구현함으로써 Client가 RealSubject를 사용하는 것과 별 차이가 없습니다.
- RealSubject
- 실질적으로 요청에 대해 주된 기능을 수행하는 객체입니다.
- Proxy 객체는 내부적으로 RealSubject 객체를 로직에 맞게 사용합니다. (위임)
활용 상황
- 기본 객체가 리소스 집약적인 경우에 유용합니다. 자잘한 작업들은 Proxy 객체가 처리하면 됩니다.
- 기본 객체에 접근을 제어해야하는 경우에 유용합니다. Proxy 객체가 권한에 따라 접근 로직을 다르게 처리하면 됩니다.
Proxy 패턴의 장단점
- 장점
- 기본 객체의 리소스가 무거운 경우, Proxy 객체에서 간단한 처리를 하거나 기본 객체를 캐싱 처리함으로써 부하를 줄일 수 있습니다.
- 기본 객체에 대한 수정 없이, Client에서의 사용과 기본 객체 사이에 일련의 로직을 Proxy 객체를 통해 넣을 수 있습니다.
- Proxy는 기본 객체와 요청 사이에 있기 때문에, 일종의 방패 역할을 합니다.
- 구조와 코드 구현이 간단합니다.
- 단점
- Proxy 객체가 중간에 껴있기 때문에, 간혹 응답이 느려질 수 있습니다. (캐싱이 안되어있는 초기 사용의 경우)