黑马程序员—代理

------- android培训java培训、期待与您交流! ----------

1,JVM可以在运行期动态生成出类的字节码,这种动态生成的类往往被用作代理类,即动态代理类。
2,JVM生成的动态类必须实现一个或多个接口,所以,JVM生成的动态类只能用作具有相同接口的目标类的代理。
3,CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以,如果要为一个没有实现接口的类生成动态代理类,那么可以使用CGLIB库。
4,代理类的各个方法中通常除了要调用目标的相应方法和对外返回目标返回的结果外,还可以在代理方法中的如下四个位置加上系统功能代码:
(1)在调用目标方法之前
(2)在调用目标方法之后
(3)在调用目标方法之后 
(4)在处理目标方法 异常的catch块中
这是我对以上4个小点的总结:其实这4个小点并不用记,在编程的时候根据自己的思想,觉得目标方法需要放在哪里你就可以把它放在哪里。

5,这个图我觉得画得很好,就把它截了下来,看了一目了然

6,下面这个问题是黑马论坛里面一个同学贴出来的,据他所说这是他在网上看到一个面试题,我看了后就觉得这个就是在考代理的编程思想

题目:实例一个巨大但有限容量的map,当元素数量达到上限后,新加入的对象映射关系将替换最近不常用的对象映射关系。

7,个人对代理的看法:

看了张老师所讲的动态代理后,我就觉得这个动态代理不能滥用,当你要对一个对象中的多个方法提供相同的额外操作时,就可以使用动态代理,如果你只对部分方法提供额外的操作,并且这些操作又各不相同,那这个时候再用动态代理的话就降低了程序的性能,并且在代码的编写量上程序员也没捡到便宜,因些我认为当只对部分方法提供额外的操作,并且这些操作又各不相同时,还不如自己写一个代理类,就比如说上面那道题,我就是自己写的一个代理类,个人觉得对于这个问题用动态代理并不合适

------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值