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

83번째 줄: 83번째 줄:
==참고==
==참고==
* {{위키백과|프록시 패턴}}
* {{위키백과|프록시 패턴}}
* {{영어위키백과|Proxy_pattern}}
* {{영어위키백과|Proxy pattern}}


[[분류: 디자인 패턴]]
[[분류: 디자인 패턴]]

2018년 8월 15일 (수) 10:31 판

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 }}