proxy designe pattern

728x90
반응형

일반적으로 프록시는 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스이다.
프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스와도 인터페이스 역할을 수행할 수 있다.

 

프록시(Proxy)란 '대리'라는 의미이다.

프록시에게 어떤 일을 대신 시키는 것이다.

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

이미지 출처 - 위키백과

보호하고 있는 개체에 대한 접근을 제어하고 관리한다.

 

이미지 출처 - https://sourcemaking.com/design_patterns/proxy

쉽게 예를 들면 수표나 신용카드, 은행계좌가 현금을 대신해주는 것이다.

현금 대신 사용할 수 있으며 필요할때 현금에 접근 할 수 있는 수단을 제공한다.

이것이 바로 프록시 패턴이 하는 일이다.

 

 

예시 코드

 

interface Image {
  public void displayImage();
}

class RealImage implements Image {
  private String filename;

  public RealImage(String filename) {
    this.filename = filename;
    loadImageFromDisk();
  }

  public void loadImageFromDisk() {
    System.out.println("Loading " + filename);
  }

  public void displayImage() {
    System.out.println("Displaying " + filename);
  }
}

class ProxyImage implements Image {
  private String filename;
  private Image image;

  public ProxyImage(String filename) {
    this.filename = filename;
  }

  public void displayImage() {
    if(image == null) {
      image = new RealImage(filename);

      image.displayImage();
    }
  }
}

class Main {
  public static void main(String[] args) {
    Image image1 = new ProxyImage("HiRes_10MB_Photo1");
    Image imgae2 = new ProxyImage("HiRes_10MB_Photo2");

    image1.displayImage();
    imgae2.displayImage();
  }
}
Loading HiRes_10MB_Photo1
Displaying HiRes_10MB_Photo1
Loading HiRes_10MB_Photo2
Displaying HiRes_10MB_Photo2

Main에서 RealImage에 직접 접근하지 않고

ProxyImage 객체를 생성해서 대신 시킨다.

 

 


 

출처

위키백과 - 프록시 패턴

https://coding-factory.tistory.com/711

 

[Design Pattern] 프록시 패턴(Proxy Pattern)에 대하여

프록시 패턴이란? 프록시는 대리인이라는 뜻으로, 무엇인가를 대신 처리하는 의미입니다. 일종의 비서라고 생각하시면 됩니다. 사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는

coding-factory.tistory.com

https://www.geeksforgeeks.org/proxy-design-pattern/

 

Proxy Design Pattern - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

https://sourcemaking.com/design_patterns/proxy

 

Design Patterns and Refactoring

Design Patterns and Refactoring articles and guides. Design Patterns video tutorials for newbies. Simple descriptions and full source code examples in Java, C++, C#, PHP and Delphi.

sourcemaking.com

https://zzang9ha.tistory.com/378

 

Spring AOP - (1) 프록시 패턴, 데코레이터 패턴

📎 글또 6기 포스팅 1. 미치도록 더웠던 7월의 회고 2. 사용자가 게시물을 작성할 때의 트랜잭션 처리 3. Spring AOP - (1) 프록시 패턴, 데코레이터 패턴 4. [MySQL] - 트랜잭션의 격리 수준(Isolati

zzang9ha.tistory.com

728x90
반응형