码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式学习之--代理模式

时间:2015-08-09 17:16:09      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:设计模式

                   代理模式,顾名思义,意思和我们日常生活中的代理差不多,举一个最简单的例子,我们知道,我们的火车站购票有很多的火车票代售点,这个火车票代售点可以代替我们的火车站的售票处让我们买票,当然,代售点相比于火车站售票点又可以提供电话订票和提前预定,这样,火车票代售点就基本可以实现火车站售票点的基本功能,同时还可以提供相对于火车站售票点其他的功能。那么,我们的设计模式中的代理模式就是这个意思。

           在我们的程序中,许多类的方法中我们总需要一些额外的共同的功能,比如日志和性能优化操作,如果在所有 这些类中都加入这些相同的功能,会使我们的程序变得很冗余,这时,我们的代理模式就起作用了,代理模式在我们的程序中不会影响其原方法的执行,我们用一个代理执行类原有的功能,同时加入我们的共同的功能模块,不同类都使用这个总的实体产生代理,这样我们的程序就变得很健壮了(这也是spring中的AOP思想的实现原理)。

          在我们的初始学习中,我们先了解两种基本的代理模式,静态代理和动态代理:

          静态代理是继承目标类产生一个代理类,然后在目标类的方法中加入我们的其它功能。

         动态代理是目标类和代理类实现同一个接口,在代理类中添加一个目标类的引用添加新的功能。

         当然这些基础的代理只能对特定的类实现不同功能的代理,这种自然是不合理的,为此,我们的动态代理在我们的jdk中就提供了一个可以为所有对象生成代理的接口,只要实现了这个接口,就可以添加功能并返回这个目标类的代理。

      另一种已经实现的通用代理就是我们的cglib提供的动态代理。

     具体例子就不列举,仅供自己思维记住用。

        


版权声明:本文为博主原创文章,未经博主允许不得转载。

设计模式学习之--代理模式

标签:设计模式

原文地址:http://blog.csdn.net/u010214269/article/details/47376587

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!