一、代理模式概述
为其他对象提供一种代理以控制对这个对象的访问。
代理模式是一种结构型模式。
二、代理模式代码示例
以汽车为例,先定义一个汽车行驶接口
public interface Moveable {
public void move();
}
定义一个汽车类实现这个接口
public class Bus implements Moveable{
@Override
public void move() {
System.out.println("汽车开始行驶...");
try {
Thread.sleep(new Random().nextInt(1000));
System.out.println("汽车行驶中...");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("汽车行驶结束...");
}
}
再定义一个代理类,来代理Bus的行为
public class BusProxy {
public BusProxy(Bus bus) {
super();
this.bus = bus;
}
private Bus bus;
public void move() {
Long startTime = System.currentTimeMillis();
bus.move();
Long endTime = System.currentTimeMillis();
System.out.println("行驶耗时:" + (endTime-startTime) + "ms");
}
}
最后写一个测试类进行测试
public class Test {
public static void main(String[] args) {
Bus bus = new Bus();
BusProxy bp = new BusProxy(bus);
bp.move();
}
}
得到结果:
汽车开始行驶…
汽车行驶中…
汽车行驶结束…
行驶耗时:646ms