定义:
为其他对象提供一种代理以控制对这个对象的访问。
举例说明:
public interface Image {
void display();
}
public class RealImage implements Image {
private String fileName;
public RealImage(String fileName){
this.fileName = fileName;
loadFromDisk(fileName);
}
@Override
public void display() {…}
private void loadFromDisk(String fileName){…}
}
public class ProxyImage implements Image {
private Image realImage;
private String fileName;
public ProxyImage(String fileName){
this.fileName = fileName;
}
@Override
public void display() {
if(realImage == null){
realImage = new RealImage(fileName);
}
realImage.display();
}
}
客户端:
Image image = new ProxyImage(“pic.jpg");
image.display();
image.display();
总结:
使用代理模式可以增加功能(延迟加载,合法性检查等)使用Proxy模式要求调用方持有接口,作为Proxy的类也必须实现相同的接口类型。