设计模式之代理模式

代理模式是一种常用的设计模式,它分为静态代理&动态代码

何为代理模式,他究竟解决什么类型的问题

代理模式顾名思义就是代理一个类完成或扩充他的功能(即实现被代理类的方法),简而言之,就是在不通过修改源代码的情况下,添加新的功能,或者对原来的功能就行扩展。

如何区分静态代理和动态代理

根据代理的创建时机

静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。

动态:在程序运行时运用反射机制动态创建而成。

静态代理例子

通常静态代理模式都是基于基于实现同一接口实现的

person接口

 

 

 person接口的实现类huangs(被代理的类)

 

 

 代理类personproxy

 

 

最后我们调用代理类的action方法

 

 

 结果

 

 

静态代理通过将被代理类和代理类实现同一接口,并且通过构造器传值的方式,传入被代理类的对象,最后在代理类的方法中即可实现对代理类方法的调用或增强。

静态代理类在运行前已经由java编译器编译成class文件,即在运行前就创建好了代理类对象。

动态代理例子

动态代理有两种实现方法,一种是对实现了某一接口的类进行代理,二是对未实现某一接口的类进行。

这两种动态代理使用的技术也不同,前者是使用JDK内置的api进行实现,后者是使用cglib代理进行实现。

JDK代理

jdk代理就是利用jdk提供的接口,动态的生成代理类,其实本质上是利用反射机制获取到目标类对象,以及他的接口和方法,最后通过proxy代理对象创建

 

 

 测试

 

 另一种cglib借助ASM加载字节码过于复杂,略

 

posted @   huangs154  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示