【Spring】静态代理
来源:互联网 发布:淘宝捡漏 编辑:程序博客网 时间:2024/06/05 08:38
首先我们先来理解下什么叫代理模式?
代理模式:
代理(Proxy)是一种设计模式, 提供了对目标对象另外的访问方式;即通过代理访问目标对象。 这样好处: 可以在目标对象实现的基础上,增强额外的功能操作。(扩展目标对象的功能)。
代理模式的关键点:代理对象和目标对象
接下来我们就来讲讲静态代理:
优点:
1)代理对象要实现和目标对象一样的接口
2)可以做到不修改目标对象的前提下,对目标对象的功能进行扩展
缺点:
1)因为代理对象,需要与目标对象实现一样的接口。所以会有很多代理类,类太多。
2)一旦接口增加方法,目标对象与代理对象都要维护。接下来 我们就来做个小例子来更深刻理解静态代理
首先建立一个接口IUserDao:
package cn.qblank.a_static;public interface IUserDao {/** * 保存方法 */void save();}
然后定义一个目标对象UserDao,实现这个接口
package cn.qblank.a_static;/** * 目标对象 * @author Administrator * */public class UserDao implements IUserDao{@Overridepublic void save() {System.out.println("保存数据!!!");}}
接下来再定义一个代理对象UserDaoProxy实现这个接口
package cn.qblank.a_static;/** * 静态代理对象 * @author Administrator * */public class UserDaoProxy implements IUserDao{//接收目标对象private IUserDao target;public UserDaoProxy(IUserDao target){this.target = target;}@Overridepublic void save() {System.out.println("开启事务");//执行目标方法target.save();System.out.println("提交事务");}}
这样我们就完成了简单的静态代理,接下来建立Test类来测试一下
package cn.qblank.a_static;public class Test {public static void main(String[] args) {//创建目标对象IUserDao target = new UserDao();//创建代理对象,将目标对象传入IUserDao proxy = new UserDaoProxy(target);proxy.save();}}
使用静态代理前运行结果:
使用静态代理后运行结果如下:
我们并没有修改目标对象,而是给它添加了一个代理类,然后对其功能实现了扩展。
满足了java开发中的开闭原则:
的对于扩展是开放的,对于修改是关闭的
阅读全文
0 0
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- Spring静态代理
- spring+静态代理
- Spring静态代理
- 【Spring】静态代理
- Spring 代理中的静态代理、动态代理
- spring 代理(静态代理&动态代理&cglib代理)
- Spring AOP(1),静态代理
- 【spring 3】AOP:静态代理
- Spring(AOP静态代理)
- Spring点点滴滴之静态代理
- Spring的静态代理和动态代理
- Spring AOP 静态代理与动态代理
- Spring的静态代理和动态代理
- list
- emWin使用外部SRAM的方法
- 2017/10/24
- 大屏定时开关机,及打开浏览器
- tomcat启动报错
- 【Spring】静态代理
- List数据去重复几种做法整理
- postgres数据库最大连接数
- SQL Server删除表及删除表中数据的方法
- zssh:方便的在远程机器和本地机器传输文件
- 开通博客第一天
- 修改AcDbDimension标注颜色
- 最详细SQL注入教程
- Ionic之如何分别对iOS及Android样式兼容性处理