首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

动态署理(Dynamic Proxy)

2012-10-21 
动态代理(Dynamic Proxy)代码例子:package com.test/** * 一个真实的接口 * @author yale * */public int

动态代理(Dynamic Proxy)
代码例子:

package com.test;/** * 一个真实的接口 * @author yale * */public interface ISubject{public void request();}

package com.test;/** * 一个真实的对象 * @author yale * */public class RealSubject implements ISubject{public void request(){System.out.println("real subject request");}}

package com.test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * 一个动态代理对象,实现InvocationHandler * @author yale * */public class DynamicSubject implements InvocationHandler{  private Object obj;//被代理的对象public DynamicSubject(Object o){this.obj = o;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable{System.out.println("before request");        method.invoke(obj,args);        System.out.println("after request");return null;}}

package com.test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;/** * 调用测试 *  * @author yale *  */public class Client{public static void main(String[] args){RealSubject realSubject = new RealSubject();InvocationHandler handler = new DynamicSubject(realSubject);Class<?> classType = handler.getClass();ISubject subject = (ISubject) Proxy.newProxyInstance(classType.getClassLoader(), realSubject.getClass().getInterfaces(),handler);subject.request();}}

热点排行