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

    概念

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

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

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

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

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

    解决的问题

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

    原理

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

    代码

    静态代理:

    动态代理:

  • 相关阅读:
    c++ this *this
    名称空间
    c++ 静态持续变量
    c++ 数组
    c++ 头文件
    实例化和具体化详解
    在linux下安装eclipse以及运行c++程序的安装步骤
    在centos (linux) 搭建 eclipse c++开发分环境
    Linux上使用Qt Creator进行C/C++开发
    使用Qt Creator 2.60编写C/C++程序
  • 原文地址:https://www.cnblogs.com/fcb-it/p/12811687.html
Copyright © 2011-2022 走看看