最近、デザイン パターンについて読んでいますが、プロキシ パターンについて理解できないことがあります。
本からの引用:
- 仮想プロキシは、高価なオブジェクトをオンデマンドで作成します。動機で説明されている ImageProxy は、そのようなプロキシの例です。
このパターンを使用して、高価なオブジェクトをオンデマンドで作成できることがわかりました。また、この例も使用法を非常によく示しています。
以下は、プロキシされたクラスのコンストラクターですRealImage
。メソッドloadFromDisk()
は、コストのかかる手順を示します。
public RealImage(String fileName){
this.fileName = fileName;
loadFromDisk(fileName);
}
そして、この例ProxyImage
のプロキシ クラスは、意図した通りのことを行います。つまり、高価なオブジェクトをオンデマンドで作成します。
しかし、私の質問は、コンストラクターから高価なメソッドを削除して、loadFromDisk()
絶対に必要な場所に配置できないのはなぜですか?
ここみたいに?
public void display() {
if(!loaded){
loadFromDisk(fileName);
loaded = true;
}
//then display
}
では、なぜわざわざプロキシを使用するのでしょうか?