zoukankan      html  css  js  c++  java
  • 动态代理

    1、写一个类(我们暂且管这个类叫:真实的类),让它实现了某一个接口(该接口自己随便定义)。

    2、再写一个类(我们暂且管这个类叫:代理类),让它实现invocationhandler接口。在该类中定义一个Object类型的对象,以便用来存’第1步‘中的真实类new出来的实例。

    在代理类中实现了invocathandler的invoke方法,在invoke方法中写 method.incoke(真实的类new出来的实例,真实的类中方法所对应的参数)

    3、在一个新类中先创建一个真实类的实例。再创建一个代理类的实例(创建代理类的实例时,将真实类的实例作为参数传入代理类的构造方法中)。

    4、用真实类实现的接口作类型,通过Proxy.newProxyInstance方法创建该类型对象。其中传入的参数依次为(代理类的实例.getClassLoader(),真实类的接口,代理类的实例)

    5、第4步创建出的这个对象就称为代理对象,可以用该对象去调用该对象所对应类型中的方法(这里类型都是真实类实现的接口)

    6、aop的实现,在第2步中,“method.incoke(真实的类new出来的实例,真实的类中方法所对应的参数)” 这个方法前后加入新的操作,新加的操作就会在执行“method.incoke(真实的类new出来的实例,真实的类中方法所对应的参数)” 的前后分别执行。

  • 相关阅读:
    JS中const的使用
    JS的作用域,闭包的理解
    python中函数的默认参数是空数组
    asp.net 导出 Excel
    asp.net 导出 Excel 身份证格式显示格式问题
    HTML5
    JQuery中checkbox选择器
    JQuery中DOM操作(一)
    PL/SQL 创建用户及权限操作
    PL/SQL 表约束
  • 原文地址:https://www.cnblogs.com/BruceDu/p/7387111.html
Copyright © 2011-2022 走看看