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

静态代理设计模式

时间:2019-01-09 00:34:00      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:开发   用户   整理   数据   纯粹   通过   开始   ...   种类   

代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。

为什么需要代理:   

  打一个最简单的比方,我现在想要学习,那么就必须得把书包拿过来,把书掏出来,准备好纸笔,然后开始学习,等学完了我还得收拾书,把书塞回书包里,还得整理一下书包,这是一个完整的学习的过程,但是我很懒,不想动弹,只想学习,那可能就得让妈妈帮我把书包拿过来,把书打开,我只管学习就好了,学完以后,妈妈再帮我把书整理好放回去.(我这是打个什么破比方...),在这里,妈妈就代表了一个代理对象,要学习的人是我,而我只管学习,这样效率才最高,至于其他的交给代理对象(妈妈)做就好了,画一个丑陋的的图表示一下:

技术分享图片

静态代理

我们最开始接触jdbc操作数据库的时候,业务层每一个方法,都需要1.打开数据库连接,2.执行我们想要的操作3.关闭数据库连接.这样就使得业务层代码不够纯粹,我的功能是查询用户数据,打开和关闭数据库连接关我毛事?我干嘛要去干这件事?这就是传统开发中存在的一个问题

技术分享图片

技术分享图片

其实这个方法的实现是有问题的,核心业务与辅助业务写在了一个方法中,不但业务冗余了不说,像开关数据库连接这样的公共操作也大量的重复,这时候就出现了代理模式的思想,我们可以使用代理模式的思想改写一下上面的代码:

技术分享图片

实现类的改造:

技术分享图片

技术分享图片

通过代理模式,我们可以抽取出核心业务与辅助业务,但是问题随之而来了,我这里编写的UserServiceProxy是挺不错,可是它只能服务与UserService这个接口的对象啊,如果我有一千个业务,那岂不是要编写一千个代理类,其实这种代理模式就是静态代理,它的缺点很明显,静态代理只能服务于一种类型的对象,不利于业务的扩展,那么动态代理就诞生出来。

本文转载:技术分享图片https://www.cnblogs.com/fingerboy/p/5335328.html

静态代理设计模式

标签:开发   用户   整理   数据   纯粹   通过   开始   ...   种类   

原文地址:https://www.cnblogs.com/xianshiwang/p/10242011.html

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