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方法,中介类对象又根据自己持有的被代理对象来调用被代理对象的方法,从而达到代理

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

  • 相关阅读:
    HDOJ 1207 汉诺塔II
    [转]写代码的小女孩
    POJ Subway tree systems
    HDOJ 3555 Bomb (数位DP)
    POJ 1636 Prison rearrangement (DP)
    POJ 1015 Jury Compromise (DP)
    UVA 10003
    UVA 103 Stacking Boxes
    HDOJ 3530 Subsequence
    第三百六十二、三天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/9364563.html
Copyright © 2011-2022 走看看