프록시 패턴(Proxy Pattern)이란?

안성희·2025년 8월 31일

자바 스터디

목록 보기
5/5

다른 객체에 대한 대체 또는 자리표시자를 제공하는 디자인 패턴
실제 객체에 대한 접근을 제어하면서 추가적인 기능을 제공함

핵심 개념

  • 프록시 객체는 실제 객체와 동일한 인터페이스를 구현
  • 클라이언트가 실제 객체 대신 프록시 객체와 상호작용 가능케 함
  • 클라이언트는 프록시 객체를 통해 간접적으로 실제 객체에 접근
  • 프록시 객체는 추가적인 제어나 기능을 수행 가능

프록시 패턴의 구조

Subject

실제 객체와 프록시 객체의 공통 인터페이스 정의

RealSubject

실제 객체를 나타내는 클래스, Subject 구현

Proxy

RealSubject 와 동일한 인터페이스를 가지면, RealSubject를 대신하여 클라이언트 요청 처리

주요 유형

가상 프록시(Virtual Proxy)

  • 실제 객체의 생성을 지연시켜 성능을 향상
  • 객체가 실제로 필요할 때까지 생성을 미루는 지연 초기화(Lazy Initialization) 구현

원격 프록시(Remote Proxy)

  • 네트워크를 통해 분산된 객체에 접근
  • 원격 서버에 있는 객체를 로컬에서 사용하는 것처럼 제공

보호 프록시(Protection Proxy)

  • 클라이언트의 접근 권한이나 보안 문제를 처리
  • 객체에 대한 접근을 허용하거나 제한하는 기능 제공

스마트 프록시(Smart Proxy)

  • 실제 객체에 대환 추가적인 작업을 처리하는 역할
  • 로깅, 성능 측정, 캐싱 등의 부가 기능 제공

프록시 패턴의 장점

보안성 향상

원본 객체에 직접 접근하지 않아 보안성 향상
접근 권한 제한 및 로그 기록 가능

성능 최적화

지연 초기화를 통해 불필요한 객체 생성을 방지
캐싱을 통한 성능 향상

추가 기능 제공

실제 객체 호출 전후에 로깅, 검증, 변환 등의 부가 기능 수행 가능

메모리 관리

복잡한 객체의 생성 비용을 줄이고 리소스 사용량 최적화

사용 사례

  • 대용량 이미지나 문서
    • 실제로 필요할 때까지 로딩을 지연해야 하는 경우
  • 데이터베이스 연결
    • 연결이 실제 필요할 때까지 지연해야 하는 경우
  • 보안이 중요한 시스템
    • 객체 접근 권한을 세밀하게 제어해야 하는 경우
  • 네트워크 통신
    • 원격 객체에 대한 로컬 대리자가 필요한 경우
profile
무재다능 개발자

0개의 댓글