Spring中的设计模式

如果你正打算深入学习Spring,但是不知从何学起,那么我强烈推荐你可以按照这个系列做一遍。本系列将Spring框架的各个部分从它庞杂的代码体系中抽取出来,然后对每一个部分进行讲解,并最终搭建成简易版Spring。我以人格保证:如果你可以坚持做下来,那么你对Spring这块的知识就基本都掌握清楚了! 附上该系列地址:https://blog.csdn.net/zhang_qing_yun/article/details/120084497

Spring中的设计模式

工厂模式

Spring IOC也就是控制反转,将创建对象的控制权转移给Spring,由Spring创建实例和管理各个实例之间的依赖关系,其中,对象的创建就是通过 BeanFactory 和 ApplicationContext 完成的。

好处:把创建对象的任务交给工厂,从而将对象的创建和使用解耦开来;减少了代码的重复,Spring中创建对象是一个非常复杂的过程,但是使用工厂模式后,我们只需要对这个创建逻辑在工厂中编写一次即可。

单例模式

Spring中Bean的默认作用域就是singleton单例的,Spring通过三级缓存来管理单例对象。

单例模式的好处在于对一些重量级的对象,省略了重复创建对象花费的时间,减少了系统的开销;使用单例可以减少new操作的次数,减少了GC线程回收内存的压力。

策略模式

简单来说就是封装好一组策略,让客户端根据不同的条件选择不同的策略方式去解决问题。比如Spring的Resource类,针对不同的资源定义了不同的Resource的实现类,以此实现从不同的数据源来获取InputStream。我们看一张类图:

策略模式

代理模式

AOP是Spring的一个核心特性(面向切面编程),作为面向对象的一种补充,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,减少系统中的重复代码,降低了模块间的耦合度,提高系统的可维护性。可用于权限认证、日志、事务处理。Spring AOP实现的关键在于动态代理,有两种方式:JDK动态代理和CGLIB动态代理。

模板模式

所谓模板就是一个方法,这个方法定义了算法的骨架,即将算法的实现定义成了一组步骤,并将一些步骤延迟到子类中实现,子类重写抽象类中的模板方法实现算法骨架中特定的步骤。。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中,从而解决代码重复的问题。

Spring容器启动的时候调用的refresh()函数就是典型的模板方法,该函数规定了多个方法的执行顺序,然后其中的抽象方法由子类去实现。

适配器模式

作用就是将一个类的接口,转换成客户期望的另外一个接口。

Spring AOP中有一步是去获取拦截器链的过程,在这时Spring会通过适配器将Advisor转化为拦截器MethodInterceptor。

责任链模式

Spring AOP会将所有的拦截器组织成一条拦截器链,然后从头开始遍历调用这些拦截器的invoke方法。

观察者模式

Spring 事件驱动模型就是观察者模式很经典的一个应用。角色:事件、事件监听者、事件广播器。事件广播器中管理了所有注册的事件监听器,当我们要发布一个事件时,事件广播器就会去遍历所有的监听器,判断它监听的是不是该事件,如果是就执行其回调函数。

观察者模式的UML类图:

观察者模式的结构图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值