【发布时间】:2016-06-02 13:36:03
【问题描述】:
我最近一直在阅读Design Patterns,关于代理模式我有些不明白。
引用本书:
- 虚拟代理按需创建昂贵的对象。 Motivation 中描述的 ImageProxy 就是这种代理的一个示例。
我知道这种模式可用于按需创建昂贵的对象。 而this example也很好的说明了用法。
下面是代理类RealImage的构造函数。方法loadFromDisk() 表示昂贵的过程。
public RealImage(String fileName){
this.fileName = fileName;
loadFromDisk(fileName);
}
the example 中的代理类 ProxyImage 正是它的本意:按需创建昂贵的对象。
但我的问题是:为什么我们不能直接从构造函数中删除昂贵的loadFromDisk() 方法并将其放在绝对需要的地方,
喜欢这里吗?
public void display() {
if(!loaded){
loadFromDisk(fileName);
loaded = true;
}
//then display
}
那么,为什么还要使用代理呢?
【问题讨论】:
标签: java oop design-patterns proxy-pattern