개발하는 자몽

[TIL / Design Pattern] 프록시 패턴, 데코레이터 패턴 본문

개발 지식

[TIL / Design Pattern] 프록시 패턴, 데코레이터 패턴

jaamong 2023. 3. 27. 17:11
 

스프링 핵심 원리 - 고급편 - 인프런 | 강의

스프링의 핵심 원리와 고급 기술들을 깊이있게 학습하고, 스프링을 자신있게 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

섹션 4. 프록시 패턴과 데코레이터 패턴

 

클라이언트와 서버

Client : 요청자 

Server : 처리자

클라이언트는 서버에 필요한 것을 요청하고, 서버는 클라이언트의 요청을 처리하는 것

 

네트워크

클라이언트 : 웹 브라우저

서버 : 웹 서버

 

객체

클라이언트 : 요청하는 객체

서버 : 요청을 처리하는 객체

 

클라이언트와 서버 개념에서 일반적으로 클라이언트가 서버를 직접 호출하고, 처리 결과를 직접 받는다.

 

프록시(Proxy)

클라이언트가 요청한 결과를 서버에 직접 요청하는 것이 아니라 대리자를 통해서 대신 서버에 요청할 수 있다. 이 대리자를 프록시(Proxy)라고 한다. 직접 호출을 하는 것과 다르게 프록시를 통해 호출을 하면 중간에서 여러가지 일을 할 수 있다.

  • 접근 제어, 캐싱
  • 부가 기능 추가
  • 프록시 체인

대체 가능

서버와 프록시는 같은 인터페이스를 사용해야 한다(DI). 그리고 클라이언트가 사용하는 서버 객체를 프록시 객체로 변경해도 클라이언트 코드를 변경하지 않고 동작할 수 있어야 한다(OCP).

 프록시는 대체 가능해야 한다

프록시의 주요 기능

  • 접근 제어
    • 권한에 따른 접근 차단 
    • 캐싱
    • 지연 로딩
  • 부가 기능 추가
    • 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행
    • Ex. 요청 값이나, 응답 값을 중간에 변형
    • Ex. 실행 시간을 측정해서 추가 로그를 남김

 

GOF 디자인 패턴

아래의 두 패턴 모두 프록시를 사용한다. 이 둘을 의도(intent)에 따라 구분한다.

  • 프록시 패턴 : 접근 제어가 목적
    • 이름에 프록시가 들어갔을 뿐, 프록시와 해당 패턴은 다른 것이다.
  • 데코레이터 패턴 : 새로운 기능 추가가 목적
Comments