Java设计形式Proxy之动态代理

Java设计模式Proxy之动态代理

Java动态代理主要涉及到两个类:

  • InvocationHandler:该接口中仅定义了一个Object : invoke(Object proxy, Method method, Object[] args);参数proxy指代理类,method表示被代理的方法,args为method中的参数数组,返回值Object为代理实例的方法调用返回的值。这个抽象方法在代理类中动态实现。
  • Proxy:所有动态代理类的父类,提供用于创建动态代理类和实例的静态方法。

所谓动态代理类是在运行时生成的class,在生成它时,你必须提供一组interface给它,则动态代理类就宣称它实现了这些interface。当然,动态代理类就充当一个代理,你不要企图它会帮你干实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。


下面通过实例来说明:


Subject.java


RealSubject.java


DynamicProxy.java


Client.java


打印结果:
Before Invoke ! method : public abstract void Subject.doSomething()
RealSubject.doSomething
object : RealSubject@ec6b00    result : null    args : null
After Invoke !


转载请注明出处:http://blog.****.net/vipwalkingdog/article/details/7685873