设计模式之代理模式
代理模式是一种常用的设计模式,它分为静态代理&动态代码
何为代理模式,他究竟解决什么类型的问题
代理模式顾名思义就是代理一个类完成或扩充他的功能(即实现被代理类的方法),简而言之,就是在不通过修改源代码的情况下,添加新的功能,或者对原来的功能就行扩展。
如何区分静态代理和动态代理
根据代理的创建时机
静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。
动态:在程序运行时运用反射机制动态创建而成。
静态代理例子
通常静态代理模式都是基于基于实现同一接口实现的
person接口
person接口的实现类huangs(被代理的类)
代理类personproxy
最后我们调用代理类的action方法
结果
静态代理通过将被代理类和代理类实现同一接口,并且通过构造器传值的方式,传入被代理类的对象,最后在代理类的方法中即可实现对代理类方法的调用或增强。
静态代理类在运行前已经由java编译器编译成class文件,即在运行前就创建好了代理类对象。
动态代理例子
动态代理有两种实现方法,一种是对实现了某一接口的类进行代理,二是对未实现某一接口的类进行。
这两种动态代理使用的技术也不同,前者是使用JDK内置的api进行实现,后者是使用cglib代理进行实现。
JDK代理
jdk代理就是利用jdk提供的接口,动态的生成代理类,其实本质上是利用反射机制获取到目标类对象,以及他的接口和方法,最后通过proxy代理对象创建
测试
另一种cglib借助ASM加载字节码过于复杂,略
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)