动态代理
2018-11-26 07:56:59来源:博客园 阅读 ()
动态代理模式(泛讲):
1. 什么是动态代理模式?
动态代理模式中的代理类是由工具类或工厂类动态生成的,而不是由程序员手工定义的。代理关系是在程序运行过程中确立的。
2. 使用动态代理模式需要注意的几点:
1)动态代理模式中不用定义代理类。
2)目标对象是在客户类中创建的。原因:因为工具类或工厂类在生成代理类时,需要目标对象,而工具或工厂类是由客户类调用的,由客户类调用工具或工厂类生成代理类,并创建代理对象。
3)由于目标对象在客户类中创建,所以这种代理模式,无法实现保护和隐藏目标对象的目的。使用动态代理模式的目的是在不修改目标类的前提下,增强目标方法的功能。
4)由于代理类是由工具类或工厂类动态生成的,其生成过程具有一般性,可以为任何目标类生成代理类及代理对象。不同的目标类其增强需求是不同的,是具有个性化的。这个个性化功能增强,代理类委托给了另外一个类E实现。这个类E称为委托类。
5)使用静态代理模式和动态代理模式的目的是不同的:
a. 使用静态代理模式的目的是:保护和隐藏目标对象;
b. 使用动态代理模式的目的是:在不修改目标类的前提下,增强目标对象。
JDK 的 Proxy 动态代理
(1) 使用要求:目标类必须要实现业务接口,使用JDK的Proxy动态代理,要求目标类必须是实现接口的类。(即目标方法是接口里的方法)
(2) 动态代理类的名称:
名称由 3 部分构成: $ + Proxy + 数字 (其中数字表示当前JDK的Proxy生成的代理类的索引,索引从0开始计数。)
动态代理模式时序图流程 (以JDK的Proxy动态代理为例)
JDK的 Proxy 动态代理方法 回调流程分析
委托类 相当于回调中的 Some 类,invoke()方法 相当于回调方法;
JDK的Proxy类 相当于回调中的Third类(起传递的作用<回调方法的变形形式中>);
动态代理类 相当于 回调中的 Other类
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 代理项 Surrogate 2020-06-11
- Spring Boot 2.3.0 新特性Redis 拓扑动态感应 2020-06-11
- SpringBoot通过web页面动态控制定时任务的启动、停止、创建 2020-06-09
- Spring Cloud Gateway 扩展支持动态限流 2020-06-08
- CGLIB动态代理机制,各个方面都有写到 2020-06-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash