java设计模式---动态代理(简单笔记)

      所谓动态代理类是在运行时生成的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 !

注意:

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

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

     Proxy:所有动态代理类的父类,提供用于创建动态代理类和实例的静态方法。

 


 

你可能感兴趣的:(java设计模式---动态代理(简单笔记))