zoukankan      html  css  js  c++  java
  • Java 代理总结

    一、代理

    为其他对象提供一种代理以便控制对这个对象的访问。

    (1)静态代理

    (2)动态代理

    1)JDK自带的动态代理

    2)javaassist字节码操作库实现

    3)CGLIB

    4) ASM(底层使用指令,可维护性较差)

     

    二、静态代理

    静态代理模式一般会有三个角色:

    抽象角色:指代理角色和真实角色对外提供的公共方法,一般为一个接口

    真实角色:需要实现抽象角色接口,定义了真实角色所要实现的业务逻辑,以便供代理角色调用。也就是真正的业务逻辑在此。

    代理角色:需要实现抽象角色接口,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。

    三、动态代理

    (1)Proxy

    InvocationHandler接口

    .invoke(Object proxy,Method moehtod,Object[] args)                                                      代理执行接口拦截方法

    Proxy

    .newProxyInstance(ClassLoader loader,Class[] interfaces,Invcationhandler handler)      创建动态代理实例

    (2)CGLIB

     MethodInterceptor

    •   intercept(Object obj,Method method,Object[] args,MethodProxy proxy)     Object               拦截方法

     Enhancer

    • setSuperClass(Class superClass)            设置父类
    • setCallback(CallBack callBack)                 设置回调拦截器
    • setClassLoader(ClassLoader loader)
    • create()     Object                                      创建代理对象

    MethodProxy

    • invokeSuper(Object obj,Object[] args)    Object    执行代理对象
    • invoke(Object target,Object[] args)     Object       执行被代理对象
  • 相关阅读:
    [转]create a basic sql server 2005 trigger to send email alerts
    SDUT OJ 2783 小P寻宝记
    联想杨元庆:互联网不包治百病 概念被夸大
    【Stackoverflow好问题】Java += 操作符实质
    poj 2513 Colored Sticks (trie 树)
    Nginx基础教程PPT
    POJ 1753 Flip Game (DFS + 枚举)
    poj 3020 Antenna Placement (最小路径覆盖)
    Unable to boot : please use a kernel appropriate for your cpu
    HDU 2844 Coins (多重背包)
  • 原文地址:https://www.cnblogs.com/maokun/p/7583452.html
Copyright © 2011-2022 走看看