"프록시 패턴"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
잔글 (Jmnote님이 Proxy 패턴 문서를 프록시 패턴 문서로 이동하면서 넘겨주기를 덮어썼습니다)
(차이 없음)

2022년 6월 16일 (목) 15:50 판

1 개요

proxy pattern
프록시 패턴
  • 필요해지면 만드는 구조
  • 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스

Proxy pattern diagram.svg

2 예제

interface Image {
    public void displayImage();
}
 
// A 시스템에서
class RealImage implements Image {
 
    private String filename = null;
    // 생성자
    public RealImage(final String FILENAME) { 
        filename = FILENAME;
        loadImageFromDisk();
    }
 
    // 디스크로부터 이미지 로드
    private void loadImageFromDisk() {
        System.out.println("Loading   " + filename);
    }
 
    // 이미지 출력
    public void displayImage() { 
        System.out.println("Displaying " + filename); 
    }
}
 
// B 시스템에서
class ProxyImage implements Image {

    private RealImage image = null;
    private String filename = null;
    /**
     * Constructor
     * @param FILENAME
     */
    public ProxyImage(final String FILENAME) { 
        filename = FILENAME; 
    }
 
    // 이미지 출력
    public void displayImage() {
        if (image == null) {
           image = new RealImage(filename);
        } 
        image.displayImage();
    }
 
}
 
class ProxyExample {

   // 테스트 메소드
   public static void main(String[] args) {
        final Image IMAGE1 = new ProxyImage("HiRes_10MB_Photo1");
        final Image IMAGE2 = new ProxyImage("HiRes_10MB_Photo2");     
 
        IMAGE1.displayImage(); // loading necessary
        IMAGE1.displayImage(); // loading unnecessary
        IMAGE2.displayImage(); // loading necessary
        IMAGE2.displayImage(); // loading unnecessary
        IMAGE1.displayImage(); // loading unnecessary
    }
}

3 같이 보기

4 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}