Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

动态代理设计模式详解 PDF 下载


分享到:
时间:2020-09-06 08:41来源:http://www.java1234.com 作者:小锋  侵权举报
动态代理设计模式详解 PDF 下载
失效链接处理
动态代理设计模式详解 PDF 下载

 
本站整理下载:
 
相关截图:
 
主要内容:

什么是代理 从字面意思来看,代理比较好理解,无非就是代为处理的意思。举个例子,你在 上大学的时候,总是喜欢逃课。因此,你拜托你的同学帮你答到,而自己却窝在 宿舍玩游戏... 你的这个同学恰好就充当了代理的作用,代替你去上课。 是的,你没有看错,代理就是这么简单! 理解了代理的意思,你脑海中恐怕还有两个巨大的疑问:  怎么实现代理模式  代理模式有什么实际用途 要理解这两个问题,看一个简单的例子: 很简单的一个例子,用一个随机睡眠时间模拟小鸟在空中的飞行时间。接下来问 题来了,如果我要知道小鸟在天空中飞行了多久,怎么办? 有人说,很简单,在 Bird->fly()方法的开头记录起始时间,在方法结束记录完 成时间,两个时间相减就得到了飞行时间。
的确,这个方法没有任何问题,接下来加大问题的难度。如果 Bird 这个类来自 于某个 SDK(或者说 Jar 包)提供,你无法改动源码,怎么办? 一定会有人说,我可以在调用的地方这样写: 这个方案看起来似乎没有问题,但其实你忽略了准备这些方法所需要的时间,执 行一个方法,需要开辟栈内存、压栈、出栈等操作,这部分时间也是不可以忽略 的。因此,这个解决方案不可行。那么,还有什么方法可以做到呢? a)使用继承 继承是最直观的解决方案,相信你已经想到了,至少我最开始想到的解决方案就 是继承。 为此,我们重新创建一个类 Bird2,在 Bird2 中我们只做一件事情,就是调用父 类的 fly 方法,在前后记录时间,并打印时间差: 这是一种解决方案,还有一种解决方案叫做:聚合,其实也是比较容易想到的。 我们再次创建新类 Bird3,在 Bird3 的构造方法中传入 Bird 实例。同时,让 Bird3 也实现 Flyable 接口,并在 fly 方法中调用传入的 Bird 实例的 fly 方法:


 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐