http://www.tutorialspoint.com/design_pattern/proxy_pattern.htm
你好
我希望使用中的示例了解Java中的代理设计模式
上面的链接。在主要方法中,我不了解两者之间的区别:
//image will be loaded from disk
image.display();
System.out.println("");
//image will not be loaded from disk
image.display();
这是错字吗?相同的2个image.display()方法如何提供不同的输出?
非常感谢!
最佳答案
这不是错字。如果您在教程中查看ProxyImage
的定义,则其状态显然为:
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();
}
}
首次调用时,
realImage
为空,图像将从磁盘加载。之后,加载的图像将存储到image.realImage
并显示。在第二次调用中,该映像已经被缓存,因此不需要从磁盘加载。