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

动态署理入门

2012-10-21 
动态代理入门使用InvocationHandler实现动态代理,也就是我们常说的代理模式的一种实现方式之一:(这也是从

动态代理入门

使用InvocationHandler实现动态代理,也就是我们常说的代理模式的一种实现方式之一:(这也是从其他的地方找过来的,很浅显易懂,非原创)

?

?上代码:

?IHello接口:

public interface IHello{public void hello(String name);}

?

IHelloImpl:

/** * @copyright  XXX */package com.yourcompany.struts.proxy;/** * @author meemac * */public class HelloImpl implements IHello{/* (non-Javadoc) * @see com.yourcompany.struts.proxy.IHello#hello(java.lang.String) */public void hello(String name){// TODO Auto-generated method stubSystem.out.println("Hello"+name);}}

?

代理类:

/** * @copyright  XXX */package com.yourcompany.struts.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * @author meemac *  */public class HelloProxyImpl implements InvocationHandler{private Object delegate;public Object bind(Object delegate){this.delegate = delegate;return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass().getInterfaces(), this);}/* * (non-Javadoc) *  * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, * java.lang.reflect.Method, java.lang.Object[]) */public Object invoke(Object proxy, Method method, Object[] args)throws Throwable{Object result = null;print("call before  :" + method);result = method.invoke(delegate, args);print("call after :" + method);return result;}private void print(String message){System.out.println(message);}}

??

?

?

? 测试类:

/** * @copyright  XXX */package com.yourcompany.struts.proxy;/** * @author meemac *  */public class Demo{public static void main(String[] args){HelloProxyImpl helloProxyImpl = new HelloProxyImpl();IHello hello = (IHello) helloProxyImpl.bind(new HelloImpl());hello.hello("你妹的,我测试下.");}}

?

热点排行