개발 지식
[TIL / Design Pattern] 프록시 패턴, 데코레이터 패턴
jaamong
2023. 3. 27. 17:11
스프링 핵심 원리 - 고급편 - 인프런 | 강의
스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
섹션 4. 프록시 패턴과 데코레이터 패턴
클라이언트와 서버
Client : 요청자
Server : 처리자
클라이언트는 서버에 필요한 것을 요청하고, 서버는 클라이언트의 요청을 처리하는 것
네트워크
클라이언트 : 웹 브라우저
서버 : 웹 서버
객체
클라이언트 : 요청하는 객체
서버 : 요청을 처리하는 객체
클라이언트와 서버 개념에서 일반적으로 클라이언트가 서버를 직접 호출하고, 처리 결과를 직접 받는다.
프록시(Proxy)
클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 대리자를 통해서 대신 서버에 요청할 수 있다. 이 대리자를 프록시(Proxy)라고 한다. 직접 호출을 하는 것과 다르게 프록시를 통해 호출을 하면 중간에서 여러가지 일을 할 수 있다.
- 접근 제어, 캐싱
- 부가 기능 추가
- 프록시 체인
대체 가능
서버와 프록시는 같은 인터페이스를 사용해야 한다(DI). 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다(OCP).
▶ 프록시는 대체 가능해야 한다
프록시의 주요 기능
- 접근 제어
- 권한에 따른 접근 차단
- 캐싱
- 지연 로딩
- 부가 기능 추가
- 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행
- Ex. 요청 값이나, 응답 값을 중간에 변형
- Ex. 실행 시간을 측정해서 추가 로그를 남김
GOF 디자인 패턴
아래의 두 패턴 모두 프록시를 사용한다. 이 둘을 의도(intent)에 따라 구분한다.
- 프록시 패턴 : 접근 제어가 목적
- 이름에 프록시가 들어갔을 뿐, 프록시와 해당 패턴은 다른 것이다.
- 데코레이터 패턴 : 새로운 기능 추가가 목적