【发布时间】:2014-04-25 15:32:57
【问题描述】:
在以下示例中,来自维基书籍https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Proxy
我不确定这比仅创建真实对象并使用其中的显示图像更快/更有效。因为代理无论如何都会在 displayImage 方法中创建真实对象?
//on System B
class ProxyImage implements Image {
private RealImage image = null;
private String filename = null;
/**
* Constructor
* @param FILENAME
*/
public ProxyImage(final String FILENAME) {
filename = FILENAME;
}
/**
* Displays the image
*/
public void displayImage() {
if (image == null) {
image = new RealImage(filename);
}
image.displayImage();
}
}
如果您不使用代理,代理模式肯定不会节省内存,因为它需要实例化两个对象(代理和真实)而不是一个(真实)?
【问题讨论】:
-
这将在声明时节省内存,仅此而已。可能不值得,但您可以添加 bind() 和 release() 方法为图像动态分配内存。
-
如何节省内存?我认为我不太了解这种模式
-
我也不明白这种模式......请阅读答案。
-
如果您阅读整个示例,例如该页面上的
ProxyExample类,您将看到答案:IMAGE1.displayImage(); // loading necessary后跟IMAGE1.displayImage(); // loading unnecessary
标签: java design-patterns proxy-pattern