(1). 創建一個接口, 要代理的類和 代理類都將繼承它
package stone;
public interface Image {
public void show();
}
(2). 創建要被代理的類:
package stone;
public class BigImage implements Image {
public BigImage() {
try {
Thread.sleep(3000); // 模擬大圖片要用長時間來加載
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("loading big image ");
}
public void show() {
System.out.println("show image");
}
}
(3). 創建代理類
package stone;
public class TestProxy {
public static void main(String[] args) {
long start= System.currentTimeMillis();
Image image= new ImageProxy(null);
System.out.println("Load time:"+String.valueOf(System.currentTimeMillis()-start));
image.show();
System.out.println("Show time:"+String.valueOf(System.currentTimeMillis()-start));
}
}
(4). 運行測試類,測試代理模式:
package stone;
public class TestProxy {
public static void main(String[] args) {
long start= System.currentTimeMillis();
Image image= new ImageProxy(null);
System.out.println("Load time:"+String.valueOf(System.currentTimeMillis()-start));
image.show();
System.out.println("Show time:"+String.valueOf(System.currentTimeMillis()-start));
}
}
測試結果:
Load time:0
loading big image
show image
Show time:3000