Virtual proxy
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)
「遅延読み込み」の記事における「Virtual proxy」の解説
Virtual Proxy は実際のオブジェクトと同じインタフェースのオブジェクトである。初めてそのインタフェースのメソッドの一つが呼ばれるとき実際のオブジェクトを読み込み、委譲する。
※この「Virtual proxy」の解説は、「遅延読み込み」の解説の一部です。
「Virtual proxy」を含む「遅延読み込み」の記事については、「遅延読み込み」の概要を参照ください。
Virtual Proxy (Java)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)
「Proxy パターン」の記事における「Virtual Proxy (Java)」の解説
以下のJavaの例は、"virtual proxy" パターンを示したものである。このプログラムは以下のように出力する。 Loading HiRes_10MB_Photo1Displaying HiRes_10MB_Photo1Loading HiRes_10MB_Photo2Displaying HiRes_10MB_Photo2Displaying HiRes_10MB_Photo2 ProxyImage クラスは、実際に必要になるまで時間のかかる画像ファイルのロードを遅延させる。ファイルが結局必要とされなかった場合、時間のかかるロードは全く行われずに済む。 import java.util.*; interface Image { public void displayImage();} class RealImage implements Image { private String filename; public RealImage(String filename) { this.filename = filename; loadImageFromDisk(); } private void loadImageFromDisk() { // 時間のかかる一連の操作 // ... System.out.println("Loading "+filename); } public void displayImage() { System.out.println("Displaying "+filename); }} class ProxyImage implements Image { private String filename; private Image image; public ProxyImage(String filename) { this.filename = filename; } public void displayImage() { if (image == null) { image = new RealImage(filename); // ロードはオンデマンドでのみ行われる } image.displayImage(); }} class ProxyExample { public static void main(String[] args) { Image image1 = new ProxyImage("HiRes_10MB_Photo1"); Image image2 = new ProxyImage("HiRes_10MB_Photo2"); Image image3 = new ProxyImage("HiRes_10MB_Photo3"); image1.displayImage(); // ロードが必要 image2.displayImage(); // ロードが必要 image2.displayImage(); // すでにロード済みなのでロード不要 // image3の画像は一度もロードされない }}
※この「Virtual Proxy (Java)」の解説は、「Proxy パターン」の解説の一部です。
「Virtual Proxy (Java)」を含む「Proxy パターン」の記事については、「Proxy パターン」の概要を参照ください。
- Virtual proxyのページへのリンク