静态代理
定义一个接口:
public class Tank implements Moveable { @Override public void move() { try { Thread.sleep(new Random().nextInt(10000)); } catch (InterruptedException e) { e.printStackTrace(); } } }
被代理的接口一:
public interface Moveable { public void move(); }
被代理接口二:
public interface TankLogger { public void startLogger(); public void endLogger(); }
代理一:
public class TankLoggerProxy implements Moveable{ Moveable tank; public TankLoggerProxy(Moveable moveable) { super(); this.tank = moveable; } public void endLogger(){ } @Override public void move() { System.out.println("logger tank start move"); this.tank.move(); System.out.println("logger tank end move"); } }
代理二:
public class TankTimeProxy implements Moveable{ Moveable tank; public TankTimeProxy(Moveable tank) { super(); this.tank = tank; } public void move() { long start = System.currentTimeMillis(); System.out.println("starttime:"+start); this.tank.move(); long end = System.currentTimeMillis(); System.out.println("endtime:"+end); } }
主函数:
public class TestMain { public static void main(String[] args) { Tank tank = new Tank(); Moveable tankTimeProxy = new TankTimeProxy(tank); Moveable tankLoggerProxy = new TankLoggerProxy(tankTimeProxy); Moveable m = tankLoggerProxy; tankLoggerProxy.move(); } }
回忆过去,珍惜现在,放眼未来