静态代理设计模式

Posted xianshiwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态代理设计模式相关的知识,希望对你有一定的参考价值。

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

为什么需要代理:   

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

技术分享图片

静态代理

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

技术分享图片

技术分享图片

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

技术分享图片

实现类的改造:

技术分享图片

技术分享图片

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

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

以上是关于静态代理设计模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-静态代理

设计模式一静态代理模式

设计模式代理模式:静态代理,动态代理,spring aop

Java 设计模式之代理模式,Java 静态代理,Java 动态代理

设计思想与模式之四静态代理模式

设计模式 结构型模式 -- 代理模式(代理模式概述结构静态代理动态代理)