JDK动态代理说明
来源:互联网 发布:好用的安卓模拟器知乎 编辑:程序博客网 时间:2024/05/17 23:17
如果我们想实现类似AOP的思想,自己写代码用代理或叫装饰模式也是可以实现的,但这样我们就面临必须给每个需要被装饰(我们暂时就叫它装饰吧)的接口写装饰子类,通过添加自己需要的特定功能并委托实体接口子类完成本体行为。这样我们需要写很多代码,而且很多时候都是重复代码,当然用种种模式可以把重复代码消减到最少,但看起来还是不怎么完美。
这时候JDK的动态代理就其作用了,它帮我们减少了大量代码的编写工作,使我们可以将注意力放在我们需要添加的特定行为上。那JDK的动态代理又是如何完成的呢?它是通过动态继承基类Proxy并实现我们要代理的接口,将接口实现委托给InvocationHandler中的invoke, 将调用方法以参数形式传给invoke,同时InvocationHandler的子类持有真正的实体类对象以供方法调用。
JDK中动态代理就是代理模式的变体。如图
再看一例子:
上面的实现已经可以实现我们动态给某个方法添加其他功能了,但是它只能加一次,如果我们能以一种链化的动态代理,可以添加多层拦截那对实际应用可能更有效果,由此我们可以改变一下我们的设计,如图:
为了更好理解,看下例子。
再看下运行结果:
doBefore1
doBefore2
doBefore3
hello world
doAfter3
doAfter2
doAfter1
OK了,经过改造我们可以实现链化动态代理了,对于实际应用更能体现我们对各个层面上的切入
- JDK动态代理说明
- jdk自带的动态代理说明
- 代理模式,JDK动态代理
- Java动态代理--jdk代理
- 代理模式-JDK动态代理
- JDK中的动态代理
- JDK动态代理
- JDK动态代理
- JDK动态代理
- jdk动态代理(暂)
- JDK动态代理
- JDK动态代理实例
- jdk 动态代理
- JDK动态代理
- jdk动态代理
- JDKDynamicProxy JDK动态代理
- JDK动态代理实现
- JDK 动态代理
- TED字幕下载工具的使用方法
- Window Azure(二):开发和发布一个Azure程序
- OpenCV-2.2.0-win32-vs2010在VS2010下的安装
- 速求CAD序列号和密钥
- 我表示。。。
- JDK动态代理说明
- 用户咨询中发现产品问题
- 佳人难再得
- QtInternal 之 QVariant
- 游戏地图编辑器,JAVA版简单实现
- 书写SQL时也获得智能提示
- 给定push序列,判断栈的pop序列
- 对话框相关(继续添加中)
- Drew嵌入式系统开发主业