ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구조패턴 : Proxy 패턴
    디자인패턴 2013. 2. 6. 10:00
    반응형

    분류 : 구조패턴(Structural Patterns)


    정의 :

    일반적인 형태의 프록시는 중복하기에는 너무 비용이 비싸거나 중복자체가 불가능한 네트워크 연결, 메모리내부의 대형객체, 파일, 또는 다른 자원들에 대한 인터페이스이다.

    용도 :

    어플리케이션의 메모리 자원을 절약하기위해 사용될 수 있음.




    소스

    
    public interface Image {
    	public void displayImage();
    }
    
    //System A
    public class RealImage implements Image {
    	private String filename = null;
        /**
         * 생성자
         * @param FILENAME
         */
        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
    public class ProxyImage implements Image {
    	private RealImage image = null;
        private String filename = null;
        /**
         * 생성자
         * @param FILENAME
         */
        public ProxyImage(final String FILENAME) { 
            filename = FILENAME; 
        }
     
        /**
         * 이미지를 보여줌
         */
        public void displayImage() {
            if (image == null) {
               image = new RealImage(filename);
            } 
            image.displayImage();
        }
    
    }
    
    public class ProxyExample {
    	/**
        * Test method
        */
       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
        }
    
    }
    
    



    참고자료

    http://en.wikipedia.org/wiki/Proxy_pattern

    http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%ED%8C%A8%ED%84%B4

    반응형

    '디자인패턴' 카테고리의 다른 글

    행위패턴 : Command 패턴  (0) 2013.02.26
    행위패턴 : Chain of Responsibility 패턴  (0) 2013.02.07
    구조패턴 : Flyweight 패턴  (0) 2013.02.05
    구조패턴 : Facade 패턴  (0) 2013.01.29
    구조패턴 : Decorator 패턴  (0) 2013.01.28

    댓글

Designed by Tistory.