정처기 감자
SW 설계디자인패턴

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

프록시 proxy 패턴 - 자바스크립트 예제

SW설계디자인패턴
읽는데 6분 소요
처음 쓰여진 날: 2025-09-01
마지막 수정일: 2025-09-01
조회수: —
선수학습(1개)
  • 정보처리기사 실기를 위한 디자인 패턴 암기 방법

요약

프록시 proxy 패턴을 자바스크립트 코드와 함께 알아봅니다. 정보처리기사 대비 문제가 포함되어있습니다.

프록시 패턴 요약

패턴 종류핵심 키워드
프록시 (Proxy)대리 객체 사용 , 접근 제어, 비용 절감
프록시 패턴 감자
프록시 패턴 감자

프록시 (Proxy) 패턴

프록시(Proxy)는 '대리인'이라는 뜻으로, 다른 객체에 대한 접근을 제어하기 위해 그 객체의 대리자 역할을 하는 객체를 만드는 패턴입니다. 실제 객체에 대한 접근을 직접 하는 대신 프록시 객체를 통해 간접적으로 하게 되며, 이 과정에서 접근을 제어하거나 부가적인 작업을 수행할 수 있습니다.

현실 세계의 예로 '비서' 나 '고객센터 직원' 을 들 수 있습니다. 우리가 회사의 CEO와 직접 통화하기는 어렵습니다. 대신 비서를 통해 약속을 잡거나 메시지를 전달합니다. 이때 비서가 프록시 역할을 하며, CEO(실제 객체)에게 가해지는 불필요한 요청을 걸러내고 접근을 제어합니다.

기본 구조

  • Subject: RealSubject와 Proxy가 모두 구현해야 하는 공통 인터페이스
  • RealSubject: 프록시가 대변하는 실제 객체. 핵심적인 비즈니스 로직을 담고 있다.
  • Proxy: RealSubject와 동일한 인터페이스를 가진다. 내부에 RealSubject에 대한 참조를 가지고 있으며, 클라이언트의 요청을 받아 RealSubject에 전달하거나, 때로는 직접 처리한다.

예시: 이미지 로딩 지연 (가상 프록시)

웹 페이지에서 매우 큰 이미지를 로딩한다고 가정해보겠습니다. 이미지가 완전히 로드될 때까지 화면이 멈춰있다면 사용자 경험이 좋지 않을 것입니다. 이때 가상 프록시(Virtual Proxy) 를 사용하여 실제 이미지 객체 생성을 필요한 시점까지 지연시킬 수 있습니다.

먼저, 모든 이미지가 따를 Image 인터페이스를 정의합니다.

javascript
코드 하이라이팅 중…

실제로 무거운 이미지 파일을 로딩하고 화면에 표시하는 RealImage 클래스를 만듭니다. 생성자에서부터 무거운 작업을 수행한다고 가정합니다.

javascript
코드 하이라이팅 중…

이제 RealImage를 대리할 ProxyImage를 만듭니다.

javascript
코드 하이라이팅 중…

출력 결과:

text
코드 하이라이팅 중…

클라이언트는 ProxyImage를 RealImage와 똑같이 사용하지만, 실제 무거운 작업인 이미지 로딩은 display()가 처음 호출될 때까지 지연됩니다. 만약 display()가 한 번도 호출되지 않는다면, 불필요한 이미지 로딩을 아예 하지 않을 수도 있습니다.

왜 프록시가 필요한가요? (시간과 반응성)

위 예시에서 프록시를 사용하는 가장 큰 이유는 애플리케이션의 초기 반응성 향상입니다.

  • 프록시가 없다면? 100개의 고화질 이미지가 있는 페이지를 열 때, 100개의 RealImage 객체가 즉시 생성되면서 모든 이미지를 한 번에 로딩하기 시작합니다. 사용자는 모든 로딩이 끝날 때까지 몇 초간 흰 화면만 봐야 합니다.
  • 프록시가 있다면? 페이지를 열 때 생성되는 것은 100개의 가벼운 ProxyImage 객체뿐입니다. 페이지는 즉시 뜨고, 사용자가 스크롤하여 이미지가 화면에 보여야 할 때(.display() 호출 시) 비로소 해당 이미지만 로딩됩니다.

이처럼 프록시는 '지연 초기화(Lazy Initialization)' 기법을 통해 당장 필요하지 않은 무거운 작업(객체 생성, 데이터 로딩 등)을 뒤로 미뤄, 시스템의 초기 구동 시간을 단축시키고 리소스(메모리, 네트워크)를 효율적으로 사용하게 해줍니다.

프록시의 종류

프록시 패턴은 사용 목적에 따라 여러 종류로 나뉩니다.

  • 가상 프록시 (Virtual Proxy): 위 예시처럼 생성 비용이 큰 객체의 생성을 필요한 시점까지 연기합니다.
  • 보호 프록시 (Protection Proxy): 특정 클라이언트만 실제 객체에 접근할 수 있도록 접근을 제어하고 권한을 검사합니다.
  • 원격 프록시 (Remote Proxy): 다른 주소 공간(예: 원격 서버)에 있는 객체를 로컬에 있는 것처럼 사용할 수 있게 해줍니다.
  • 로깅/캐싱 프록시: 실제 객체에 대한 요청 전후에 로그를 남기거나, 요청 결과를 캐싱하여 성능을 향상시킵니다.

프록시 패턴 중요 키워드

  • 실제 객체를 대신하여 제어 흐름을 조정한다.
  • 실제 객체와 프록시는 동일한 인터페이스를 사용한다.
  • 접근 제어, 비용 절감, 복잡도 감소 등 다양한 목적으로 사용된다.
  • 클라이언트는 자신이 프록시를 사용하는지 실제 객체를 사용하는지 모를 수 있다.

정처기 기출 문제

메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • 디자인 패턴 정보처리기사 기출 문제 모음

추천 개념

Beta

관련 글

(41개)
제목태그업데이트시험
추상 팩토리 abstract factory 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
빌더 builder 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-09-02-
팩토리 메서드 factory method 패턴 - 자바스크립트 예제
디자인패턴SW설계디자인패턴
2025-11-03-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999