首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

说说服态代理

2012-09-06 
说说动态代理在文章代理模式之静态代理(2)中我们了解到静态代理的运行机制.同时在文章的尾部看到了静态代

说说动态代理

         在文章代理模式之静态代理(2)中我们了解到静态代理的运行机制.同时在文章的尾部看到了静态代理的不足.而动态代理可以弥补那些不足,接下来我们将详细的来了解一下动态代理.

        在Java的Java.lang.reflect包中提供Proxy类和InvocationHandler.我们可以通过他们两个生成动态的JDK动态代理类或者动态代理对象.

 

         一个类:Proxy(动态生成一个代理对象)必须这个类实现了接口才可以生成代理,如果没有接口的话就不能生成代理.它是通过接口在内存中建立一个类.

        一个接口:Interface InvocationHandler.系统生成的每个代理对象都有一个与之相对应的InvocationHandler对象.

 

 

具体代码示例:

       由于在上文中的接口类和目标类没有进行更改,这里不再赘述.需要更改的是将原来的静态代理中手动添加的代理类删除.取而代之的是一个实现InvocationHandler接口的LogHandler类;

LogHandler类:(在原有的基础之上添加日志功能)

 


startTime: 2012-08-10 16:49:37  start-->>addUser

00001

刘德华

UserManagerImpl.addUser()userId-->00001

successTime: 2012-08-10 16:49:37  success-->>addUser

 


    使用动态代理,我们可以看到非常好的解耦效果.当然,在我们使用Proxy的时候也不是随意的用的,通常都是为一个指定的目标对象来生成动态代理.这种动态代理在AOP(AspectOrient Program)面向切面编程中称之为AOP代理.AOP代理可以替代目标对象,并且包含目标对象的全部方法,同时在已有方法的基础之上向前,向后加入一些通用处理的方法,例如上例中的日志处理.

 

          通过对动态代理模式的研究和学习可以看到编程的艺术性,同时也在演绎着面向对象的核心思想.

8楼lbq613613昨天 01:04
设计模式Again!!!
7楼llhhyy19893天前 11:04
动态代理两种方式,我还是没有掌握牢固,回头得继续。。。。
6楼lfsfxy93天前 11:00
好,可以讨论讨论。
5楼smszhuang1683天前 08:00
好,顶一个
4楼lfmilaoshi3天前 23:19
继续深入理解。。。。米老师
3楼lilongsheng11254天前 08:26
代理!
2楼myemptyname4天前 22:43
mark mark
1楼liushuijinger5天前 20:36
不变应万变

热点排行