• Proxy-静态代理


    • 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问
    • 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别
    • 通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性
    • 更通俗的说,代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让我们只了解代理类即可,而且代理的出现还可以让我们完成与另一个类之间的关系的统一管理
    • 但是切记,代理类和委托类要实现相同的接口,因为代理真正调用的还是委托类的方法
    • 按照代理的创建时期,代理类可以分为两种:
    • 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译;在程序运行前代理类的.class文件就已经存在了
    • 动态:在程序运行时运用反射机制动态创建而成
    • 静态代理原则:
    • 1.代理类和委托类实现同样的接口
    • 2.在代理类中传入委托类的引用
    • 3.代理类要实现的功能,可以增强,也可以不增强
    • 这个原则看起来与装饰者模式很像,但实际上目的是不同的
    • 相同:
    • (1)都要实现与目标类相同的接口
    • (2)在类中都要声明增强目标对象
    • (3)都可以在不修改目标类的前提下增强目标方法
    • 不同:
    • (1)装饰者模式主要是为了是为了增强目标方法
    • (2)静态代理是为了隐藏原始对象,增强不是关键,隐藏才是关键
    • 当实际开发中有很多这样的主题接口和类需要功能增强时,就需要更多的代理类,即每一个主题接口都得创建一个代理类,会造成代码的繁多和冗余,因此就产生了动态代理技术
  • 相关阅读:
    PMI-ACP练习题(24)
    珂朵莉树学习笔记
    Linux 6.6 初步支持AMD 新一代 Zen 5 处理器
    C/C++公交路线自动化选择系统
    Java(五)(Object类,克隆,Objects类,包装类,StringBuilder,StringJoiner,BigDecimal)
    开关电源环路学习笔记(7)-BUCK电源环路仿真实验验证
    单例模式只会懒汉饿汉?读完本篇让你面试疯狂加分
    java计算机毕业设计网上体育用品销售系统源程序+mysql+系统+lw文档+远程调试
    小约翰可汗视频随记
    cv2 resize 与reshape的区别
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126941696