실제 객체의 생성시간이 오래걸리는 경우 일을 분업하여 간단한 초기 작업을 프록시에서 하고,
가장 중요한 마지막 작업에서 프록시객체는 실제 객체를 생성하고 위임한다.
로컬 환경에 존재하며, 원격객체(JVM의 Heap에 있는 객체)에 대한 대변자 역할을 하는 객체
서로 다른 주소 공간에 있는 객체에 대해 마치 같은 주소 공간에 있는 것처럼 동작하게 만드는 패턴
꼭 필요로 하는 시점까지 객체의 생성을연기하고, 해당 객체가 생성된 것처럼 동작하도록 만들고 싶을 때 사용하는 패턴
객체에 대한 접근 권한을 제어하거나 객체마다 접근 권한을 달리하고 싶을 때 사용하는 패턴으로
실객체에 대한 접근을 가로채어 중간에서 권한 점검을 수행
public interface Image {
void display();
}
public class ProxyImage implements Image {
private RealImage realImage;
private String fileName;
public ProxyImage(String fileName){
this.fileName=fileName;
}
@Override
public void display() {
if(realImage == null){
realImage = new RealImage(fileName);
}
realImage.display();
}
}
public class RealImage implements Image {
private String fileName;
public RealImage(String fileName){
this.fileName=fileName;
loadFromDisk(fileName);
}
private void loadFromDisk(String fileName){
System.out.println("Loading " + fileName);
}
@Override
public void display() {
System.out.println("Displaying " + fileName);
}
}
public class Main {
public static void main(String[] args){
Image image = new ProxyImage("test.jpg");
image.display();
}
}