Java设计形式Proxy之动态代理
Java设计模式Proxy之动态代理
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:所有动态代理类的父类,提供用于创建动态代理类和实例的静态方法。
所谓动态代理类是在运行时生成的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