• 理解设计模式(代理)


    代理模式,屏蔽真实对象,仅提供其代理,供系统使用

    代理模式

    • 特定环境:要求在原来基础上增加额外功能,但不能修改源代码
    • 一类问题:在不更改或无法更改源代码的前提下,在其基础上增加额外逻辑
    • 解决方案:静态/动态代理

    功能

    • 预处理
    • 过滤
    • 事后处理

    分类

    透明代理:不能直接使用被代理类,只可以通过代理类来使用

    强制代理:被代理类指定代理类,仅可通过该代理类来访问它

    代理类的个性化:代理类在实现被代理类接口的同时,可实现其他独有接口

    静态代理:显式创建代理类

    动态代理:运行时,创建代理类,实现额外功能,常见实现方式有:jdk InvocationHandler 和cglib MethodInterceptor

    jdk InvocationHandler

    主要通过Java的反射机制实现
    运行时,动态创建代理类

    该方式,要求被代理类必须实现若干接口
    另外,该方式,也避免静态代理中,代理类需要实现多个接口的繁杂

    cglib MethodInterceptor

    相对于jdk类库的动态代理,此方式更加通用
    因为,并不需要代理类实现接口
    本质上,通过创建代理类的子类来实现代理,也就是继承

    参考

    动态代理的两种方式:Proxy和Cglib

    Java动态代理一——动态类Proxy的使用

    Java动态代理二——CGLIB动态代理应用

  • 相关阅读:
    oracle常用命令(比较常见好用)
    vim编辑器详解
    对话框和打印控件
    winform弹出唯一的窗体
    ListView
    菜单栏和布局
    窗体属性和公共控件
    ASPCMS和WPF
    MVC
    正则表达式
  • 原文地址:https://www.cnblogs.com/CoolSoul/p/4984852.html
Copyright © 2020-2023  润新知