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中编写核⼼算法,具体的实现步骤在⼦类中完成

相关推荐
兰亭序咖啡4 分钟前
学透Spring Boot — 010. 单元测试和Spring Test
spring boot·spring·单元测试
侧耳倾听1114 分钟前
单元测试之mockito
java·单元测试
苹果酱05678 分钟前
SpringCloud第二篇:注册中心Eureka
java·vue.js·spring boot·mysql·课程设计
圈圈编码9 分钟前
WebSocket
java·网络·spring boot·websocket·网络协议·spring
szuaudi11 分钟前
SpringMVC实现text/event-stream(SSE)
java·spring
nlog3n32 分钟前
Java 桥接模式 详解
java·开发语言·桥接模式
理想奋斗中37 分钟前
【并发编程 | 第五篇】探索ThreadLocal的原理
java·多线程·threadlocal·threadlocalmap
李小白6640 分钟前
JavaEE初阶复习(JVM篇)
java·jvm·java-ee
Easonmax1 小时前
【JavaEE】网络原理详解
java·java-ee
movie__movie1 小时前
Spring AI MCP 客户端实战:轻松连接高德地图等工具
数据库·人工智能·spring