GOF23设计模式之动态代理模式之理解

来源:互联网 发布:beats微先专卖店 知乎 编辑:程序博客网 时间:2024/06/05 00:18

动态代理(dynamic Proxy
      动态代理(动态生成代理类)
  • JDK自带的动态代理
  • Javaassist字节码操作库实现
  • CGLIB
  • ASM(底层使用指令,可维护性较差)
相当于静态代理的优点:
      抽象角色中(接口)声明的所有方法都被转移到调用处理器一个集中的方法中处理,这样
      我们可以更加灵活和统一的处理众多的方法。
JDK自带的动态代理:
      Java.lang.reflect.Proxy
           作用:动态生成代理类和对象
      Java.Lang.reflect.InvocationHandler(处理器接口)
           每次通过invoke方法实现对真实角色的代理访问
           每次通过Proxy生成代理类对象时都要指定对应的处理器对象
 
      一般的动态代理代码如下:
           Star realStar = new RealStar();
           StarHandler handler = newStarHandler(realStar);
           Star proxy =(Star)Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Star.class},handler);
           proxy.sing();
 
 
                                             
0 0
原创粉丝点击