Spring系列文章:Spring中的设计模式

一、简单⼯⼚模式

BeanFactory的getBean()⽅法,通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式(静态⼯⼚模 式);

二、⼯⼚⽅法模式

FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法,该⽅法 是⼀个实例⽅法。

三、单例模式

Spring⽤的是双重判断加锁的单例模式。请看下⾯代码,我们之前讲解Bean的循环依赖的时候⻅过:

四、 代理模式

Spring的AOP就是使⽤了动态代理实现的。

五、装饰器模式

JavaSE中的IO流是⾮常典型的装饰器模式。

Spring 中配置 DataSource 的时候,这些dataSource可能是各种不同类型的,⽐如不同的数据库: Oracle、SQL Server、MySQL等,也可能是不同的数据源:⽐如apache 提供的 org.apache.commons.dbcp.BasicDataSource、spring提供的 org.springframework.jndi.JndiObjectFactoryBean等。

这时,能否在尽可能少修改原有类代码下的情况下,做到动态切换不同的数据源?此时就可以⽤到装饰 者模式。

Spring根据每次请求的不同,将dataSource属性设置成不同的数据源,以到达切换数据源的⽬的。 Spring中类名中带有:Decorator和Wrapper单词的类,都是装饰器模式。

六、观察者模式

定义对象间的⼀对多的关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都得到通知并⾃动更 新。Spring中观察者模式⼀般⽤在listener的实现。

Spring中的事件编程模型就是观察者模式的实现。在Spring中定义了⼀个ApplicationListener接⼝,⽤ 来监听Application的事件,Application其实就是ApplicationContext,ApplicationContext内置了⼏个 事件,其中⽐较容易理解的是:ContextRefreshedEvent、ContextStartedEvent、 ContextStoppedEvent、ContextClosedEvent

七、策略模式

策略模式是⾏为性模式,调⽤不同的⽅法,适应⾏为的变化 ,强调⽗类的调⽤⼦类的特性 。 getHandler是HandlerMapping接⼝中的唯⼀⽅法,⽤于根据请求找到匹配的处理器。

⽐如我们⾃⼰写了AccountDao接⼝,然后这个接⼝下有不同的实现类:AccountDaoForMySQL, AccountDaoForOracle。对于service来说不需要关⼼底层具体的实现,只需要⾯向AccountDao接⼝调 ⽤,底层可以灵活切换实现,这就是策略模式。

八、模板方法模式

Spring中的JdbcTemplate类就是⼀个模板类。它就是⼀个模板⽅法设计模式的体现。在模板类的模板⽅ 法execute中编写核⼼算法,具体的实现步骤在⼦类中完成

相关推荐
daidaidaiyu3 小时前
一文学习 工作流开发 BPMN、 Flowable
java
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34165 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
m0_726965985 小时前
面面面,面面(1)
java·开发语言
代码栈上的思考6 小时前
消息队列:内存与磁盘数据中心设计与实现
后端·spring
xuhaoyu_cpp_java6 小时前
过滤器与监听器学习
java·经验分享·笔记·学习
程序员小假6 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha7 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34167 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端