java 动态代理

来源:互联网 发布:vmware 12 mac 编辑:程序博客网 时间:2024/05/20 19:49

什么是代理?

应用设计模式定义,代理是对其他对象提供一种代理以控制对这个对象的访问。

反映到动态代理中,”控制对这个对象的访问“貌似是通过invokeHandler来实现的。


java动态代理是在java反射的基础上封装了一层。


public  void invokeMethod(Interface[] interfaces)

{

         for(Interface interface :interfaces)

         {

                  String interfaceName = interface.getName();

                 Class objeClass = Class.forName(interfaceName);       

                Method[] mehods = objeClass.getMethods();


               for (Method method : methods)

              {

                       invoke(proxy,  method,  args);

              }

         }

      

public abstract void invoke(object proxy,  Method method, object[] args);


对于多个接口,动态代理内部实现上实际上是将所有的接口拼接为一个接口。而定义InvocationHandler 接口带来的益处是方便的实现AOP。


当我们调用proxy.methodimpl(object args)的时候,代理类将methodimpl和args作为参数传递给了invokeMethod方法,从而实现了动态代理。  


}

原创粉丝点击