• Proxy-静态代理


    • 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问
    • 为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别
    • 通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性
    • 更通俗的说,代理解决的问题当两个类需要通信时,引入第三方代理类,将两个类的关系解耦,让我们只了解代理类即可,而且代理的出现还可以让我们完成与另一个类之间的关系的统一管理
    • 但是切记,代理类和委托类要实现相同的接口,因为代理真正调用的还是委托类的方法
    • 按照代理的创建时期,代理类可以分为两种:
    • 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译;在程序运行前代理类的.class文件就已经存在了
    • 动态:在程序运行时运用反射机制动态创建而成
    • 静态代理原则:
    • 1.代理类和委托类实现同样的接口
    • 2.在代理类中传入委托类的引用
    • 3.代理类要实现的功能,可以增强,也可以不增强
    • 这个原则看起来与装饰者模式很像,但实际上目的是不同的
    • 相同:
    • (1)都要实现与目标类相同的接口
    • (2)在类中都要声明增强目标对象
    • (3)都可以在不修改目标类的前提下增强目标方法
    • 不同:
    • (1)装饰者模式主要是为了是为了增强目标方法
    • (2)静态代理是为了隐藏原始对象,增强不是关键,隐藏才是关键
    • 当实际开发中有很多这样的主题接口和类需要功能增强时,就需要更多的代理类,即每一个主题接口都得创建一个代理类,会造成代码的繁多和冗余,因此就产生了动态代理技术
  • 相关阅读:
    彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05
    Linux shell 重定向输入和输出
    Docker容器技术
    FTPS 227 Entering Passive Mode
    Git详细介绍与SSH链接远程仓库
    java基础03
    04_SpingBoot 前端使用JSP
    Android-Firebase快速解决合规问题,延迟Firebase初始化
    nodejs+vue 高校社团综合服务系统elementui
    期货权益可用资金(期货的权益和可用资金)
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/126941696