首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

动态代理的容易实现

2013-11-08 
动态代理的简单实现//这个接口定义一个可以移动的方法public interface Moveable {void move()}//Car类实

动态代理的简单实现

//这个接口定义一个可以移动的方法public interface Moveable {void move();}//Car类实现了Moveable接口public class Car implements Moveable {public void move() {System.out.println("Car moving!");try {Thread.sleep(new Random().nextInt(10000));} catch (InterruptedException e) {e.printStackTrace();}}}//定义一个记录方法运行时间的操作类import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class TimeHandler implements InvocationHandler {Moveable m;public TimeHandler(Moveable m) {super();this.m = m;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {long start = System.currentTimeMillis();method.invoke(m, null);long end = System.currentTimeMillis();System.out.println("time:" + (end - start));return null;}}//测试代理import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class Test {public static void main(String[] args) {Car c = new Car();InvocationHandler h = new TimeHandler(c);Moveable m = (Moveable) Proxy.newProxyInstance(Test.class.getClassLoader(), new Class[] { Moveable.class }, h);m.move();}}

?

热点排行