设计模式--代理(静态)

看点写点,日子就是这么这么过去了...

//聚合V继承

静态代理:

Moveable.java

package com.inspur.democreen.agent1; public interface Moveable { void move(); }

 

 

Tank.java

package com.inspur.democreen.agent1; import java.util.Random; public class Tank implements Moveable { public void move() { System.out.println("this Tank is moving..."); try { Thread.sleep(new Random().nextInt(10000)); } catch (InterruptedException e) { e.printStackTrace(); } } }

 

TankLogProxy.java

package com.inspur.democreen.agent1; public class TankLogProxy implements Moveable { Moveable t; public TankLogProxy(Moveable ttp) { super(); this.t = ttp; } public void move() { System.out.println("Tank is starting..."); t.move(); System.out.println("Tank is ending..."); } }

 

TankTimeProxy.java

package com.inspur.democreen.agent1; public class TankTimeProxy implements Moveable { Moveable t ; public TankTimeProxy(Moveable t) { super(); this.t = t; } public void move() { long start = System.currentTimeMillis(); t.move(); long end = System.currentTimeMillis(); System.out.println("time:"+(end-start)); } }

 

Client.java

 

package test1; import com.inspur.democreen.agent1.Moveable; import com.inspur.democreen.agent1.Tank; import com.inspur.democreen.agent1.TankLogProxy; import com.inspur.democreen.agent1.TankTimeProxy; //聚合V继承 public class Client { //先记录时间,再记录日志 public static void main(String [] args){ Tank t = new Tank(); TankTimeProxy ttp = new TankTimeProxy(t); TankLogProxy tlp = new TankLogProxy(ttp); Moveable m = tlp; m.move(); } //先记录日志再记录时间 /*public static void main(String [] args){ Tank t = new Tank(); TankLogProxy tlp = new TankLogProxy(t); TankTimeProxy ttp = new TankTimeProxy(tlp); Moveable m = ttp; m.move(); }*/ }

 

运行结果:

Tank is starting...
this Tank is moving...
time:4281
Tank is ending...

 

 

静态代理  原理---

 

 

你可能感兴趣的:(设计模式--代理(静态))