(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