pattern

Proxy Pattern

easy16 2018. 7. 20. 14:52

Proxy Pattern


-structual pattern의 하나로, 다른 class의 기능을 담당하는 또다른 class

-outer world에 본래 객체의 기능전달을 위한 interface를 가진 객체를 만든다.


ProxyImage는 RealImage를 field로 가진다.(original object)

ProxyImage는 Image 와 공통의 interface를 구현함으로써 RealImage의 존재를 가리고 기능을 대신 제공한다.

client 오직 proxy와 대화하며 loadFromDisk와 같은 부차적인 작업에 신경쓸 필요가 없다.



ProxyImage.java

public class ProxyImage implements Image {
    private String fileName;
    RealImage realImage;

    public ProxyImage(String fileName){
        this.fileName = fileName;
    }
    @Override
    public void display() {
        if(realImage==null){
            realImage=new RealImage(fileName);
        }
        realImage.display();
    }
}


RealImage.java
public class RealImage implements Image {
    private String fileName;


    RealImage(String fileName){
        this.fileName=fileName;
        loadFromDisk(fileName);
    }

    private void loadFromDisk(String fileName) {
        Log.d(TAG, "Loading :" +fileName);
    }

    @Override
    public void display() {
        Log.d(TAG, "display :" +fileName);
    }

}


Image.java

public interface Image {
    public static final String TAG = "Image";
    void display();
}

결과 : 

07-20 14:42:45.132 13017 13017 D Image   : Loading :SimpleFile.png

07-20 14:42:45.133 13017 13017 D Image   : display :SimpleFile.png

07-20 14:42:45.133 13017 13017 D Image   : display :SimpleFile.png


출처 : 

https://www.tutorialspoint.com/design_pattern/proxy_pattern.htm