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出来的实例,真实的类中方法所对应的参数)” 的前后分别执行。

  • 相关阅读:
    c++ 内存管理
    socket粘包现象加解决办法
    TCP与UDP比较 以及并发编程基础知识
    进程之 Process join方法其他属性与进程Queue
    socket通讯实例与TCP/UDP的区别
    socket介绍
    python中的异常处理机制
    面向对象之多态,多态性,反射,以及基于反射的可拔插设计
    面向对象之元类介绍
    面向对象基础
  • 原文地址:https://www.cnblogs.com/BruceDu/p/7387111.html
Copyright © 2011-2022 走看看