본문 바로가기
개발공부 일지/면접

프록시 패턴(Proxy Pattern)

by Box Cat 2023. 10. 3.
728x90
반응형

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

프록시는 대리인이라는 뜻으로, 무엇인가를 대신 처리하는 의미이다.
일종의 비서라고 생각하면 된다.사장실에 바로 들어가서 사장님을 바로 만나는게 아닌 비서를 통해 사장님을 만나는 개념이라고 생각할 수 있겠다.

어떤 객체를 사용하고자 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고,
실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다.

프록시 패턴(Proxy Pattern)을 사용하는 이유가 뭘까?

  • 객체지향 5원칙 중 하나인 OCP를 지킬 수 있다.
  • 객체지향 5원칙 중 하나인 SRP를 지킬 수 있다.
  • 유연한 코드를 만들 수 있다.

프록시 패턴(Proxy Pattern) 간단 예제

// 실제 이미지 로딩을 담당하는 클래스
class RealImage {
  constructor(private filename: string) {
    this.loadImage();
  }

  private loadImage() {
    console.log(`Loading image: ${this.filename}`);
  }

  display() {
    console.log(`Displaying image: ${this.filename}`);
  }
}

// 이미지 로딩을 제어하는 프록시 클래스
class ImageProxy {
  private realImage: RealImage | null = null;

  constructor(private filename: string) {}

  display() {
    if (!this.realImage) {
      // 이미지가 로드되지 않았다면 실제 이미지 로딩 수행
      this.realImage = new RealImage(this.filename);
    }
    this.realImage?.display();
  }
}

// 클라이언트 코드
const image1 = new ImageProxy('image1.jpg');
const image2 = new ImageProxy('image2.jpg');

// 이미지 표시 시, 실제 로딩은 필요할 때 수행됨
image1.display();
image2.display();

 

 

프록시 패턴(Proxy Pattern)의 장단점

프록시 패턴 장점

  • 기존 객체를 수정하지 않고 일련의 로직을 프록시 패턴을 통해 추가할 수 있다.
  • 실제 객체를 수행하기 이전에 전처리를 하거나, 기존 객체를 캐싱할 수 있다
  • 기존 객체와 클라이언트의 요청 사이에 위치해 있기 때문에 하나의 방패(보안) 역할을 한다.

프록시 패턴 단점

  • 코드의 복잡도가 증가한다
  • 성능이 저하될 수 있다.

 

 

728x90
반응형

댓글