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

    一、代理模式  

      代理模式是常用的java设计模式,它的特征是代理类和委托类具有相同的接口,代理类负责给委托类预处理消息、过滤消息、传递消息和事后处理消息等。简单的说,就是访问实际对象的时候,通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。

    二、静态代理

      静态代理在编译期就已经将接口、代理类和被代理类确定下来了。并且一个代理类只能代理一个业务接口的实现类,如果有多个业务接口,需要多个代理类,若代理类对业务方法的预处理和调用后处理是一样的,则多个代理类就会有很多重复代码。

    三、java动态代理

      java动态代理能代理所有实现类的方法调用:根据传过来的业务实现类和方法名进行具体调用。并且动态代理可以对代理类的函数进行统一管理。

      创建JDK动态代理对象的简单实现:

      根据java.lang.reflect包下提供的Proxy类和InvocationHandler接口可以生成JDK动态代理类和动态代理对象。

        1. //首先创建与代理对象关联InvocationHandler对象

        2. //使用Proxy类的静态方法getProxyClass动态创建一个代理类

        

        3. //使用反射获取代理类的带InvocationHandler类型参数的构造函数

        4. //通过构造器创建一个实例对象(代理对象)

      其中,InvocationHandler对象相当于一个中介类对象,代理对象在调用自己方法的时候,会根据自己持有的中介类对象调用中介类对象的invoke方法,中介类对象又根据自己持有的被代理对象来调用被代理对象的方法,从而达到代理

    执行被代理对象的方法。也就是说,动态代理就是通过中介类实现了具体的代理功能。

  • 相关阅读:
    spoj 7001 Visible Lattice Points莫比乌斯反演
    codeforces 446C DZY Loves Fibonacci Numbers 数论+线段树成段更新
    fzu 1753 质因数的应用
    hud 4746 莫比乌斯反演
    hdu 1695 容斥原理或莫比乌斯反演
    hdu 4741 Save Labman No.004异面直线间的距离既构成最小距离的两个端点
    codeforces练习
    年底Android面试整理(附答案)
    最近Android真的凉凉了?
    Android 应用防止被二次打包指南
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/9364563.html
Copyright © 2011-2022 走看看