zoukankan      html  css  js  c++  java
  • 设计模式:代理模式

    概念

    • 代理:静态代理、动态代理

    • 代理角色、被代理的角色(目标对象),由被代理角色来做最终的决定

    • 代理角色通常来说会持有被代理角色的对象引用,以便于代理角色完成工作之前或之后能找到被代理对象,能够通知被代理对象。

    • 静态代理:目标类,代理类。在代理前所有的东西都是已知的,不利于拓展。

    • 动态代理:动态代理类。JDK动态代理(接口)、CGLIB动态代理(继承)。目的是拿到目标类的引用,并且调用目标类的业务方法。在代理前,所有东西是未知的,运行时可以动态生成。

    解决的问题

    AOP实现、拦截器、中介、黄牛、媒婆、解耦、专人做专事、自己不想做又不得不做的事、增强

    原理

    • 1、拿到被代理对象的引用,并且获取到它的所有接口,反射获取
    • 2、JDK Proxy类重新生成一个新的类,同时新的类要实现被代理类所有接口
    • 3、动态生成Java代码,把新加的业务逻辑方法由一定的逻辑代码去调用
    • 4、编译新生成的Java代码.class
    • 5、再重新加载到JVM中运行
    • 以上这个过程就叫字节码重组

    代码

    静态代理:

    动态代理:

  • 相关阅读:
    【02】SASS与SCSS
    【02】sass更新的方法
    10.19 dig:域名查询工具
    10.7 netstat:查看网络状态
    10.6 ip:网络配置工具
    S11 Linux系统管理命令
    11.19 rpm:RPM包管理器
    11.20 yum:自动化RPM包管理工具
    11.2 uptime:显示系统的运行时间及负载
    11.3 free:查看系统内存信息
  • 原文地址:https://www.cnblogs.com/fcb-it/p/12811687.html
Copyright © 2011-2022 走看看