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

75번째 줄: 75번째 줄:
*[[Composite 패턴]]
*[[Composite 패턴]]
*[[Decorator 패턴]]
*[[Decorator 패턴]]
*[[늦은 초기화]]
*[[게으른 초기화]]
*[[디자인 패턴]]
*[[디자인 패턴]]



2013년 2월 24일 (일) 18:34 판

1 개요

proxy pattern
프록시 패턴
  • 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스

Proxy pattern diagram.svg

2 예제

interface Image {
    public void displayImage();
}
 
//on System 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 }}