当前位置: 首页 > news >正文

十五、Spring中的八大模式

1 简单工厂模式

BeanFactory的getBean()方法,通过唯一标识来获取Bean对象。是典型的简单工厂模式(静态工厂模式);

2 工厂方法模式

FactoryBean是典型的工厂方法模式。在配置文件中通过factory-method属性来指定工厂方法,该方法是一个实例方法。

3 单例模式

Spring用的是双重判断加锁的单例模式。Bean的循环依赖的时候见过:
在这里插入图片描述

4 代理模式

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

5 装饰器模式

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单词的类,都是装饰器模式。

6 观察者模式

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

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

7 策略模式

策略模式是行为性模式,调用不同的方法,适应行为的变化 ,强调父类的调用子类的特性 。

getHandler是HandlerMapping接口中的唯一方法,用于根据请求找到匹配的处理器。

比如我们自己写了AccountDao接口,然后这个接口下有不同的实现类:AccountDaoForMySQL,AccountDaoForOracle。对于service来说不需要关心底层具体的实现,只需要面向AccountDao接口调用,底层可以灵活切换实现,这就是策略模式。

8 模板方法模式

Spring中的JdbcTemplate类就是一个模板类。它就是一个模板方法设计模式的体现。在模板类的模板方法execute中编写核心算法,具体的实现步骤在子类中完成。

http://www.lryc.cn/news/31728.html

相关文章:

  • GrabCut算法、物体显著性检测
  • 亚马逊、速卖通、lazada店铺一直不出单,没流量怎么办?
  • 深度剖析C语言符号篇
  • 【学习总结】ORBSLAM3使用自己相机数据
  • C++单例模式实现
  • 343. 整数拆分
  • SCAFFOLD: Stochastic Controlled Averaging for Federated Learning学习
  • 第十四届蓝桥杯三月真题刷题训练——第 3 天
  • 变量的四大存储类型static extern auto register
  • JavaScript基础五、语句
  • 青龙面板399乐园
  • 自动化注册组件
  • 【JS代码优化一】分支优化篇
  • 软件测试-接口测试-补充
  • Spring笔记(5):Beans自动装配
  • Spark+Vue+Springboot 协同过滤额音乐推荐大数据深度学习项目
  • JDBC的实现(IDEA版)
  • 人员摔倒识别预警系统 人员跌倒检测算法 yolov7
  • Spring-Cloud-Gateway集成Nacos如何做负载均衡?
  • 【数据挖掘与商务智能决策】第四章 逻辑回归模型
  • 滚动升级回滚
  • 2023/3/6 VUE - 组件传值【通信】方式
  • MedCalc v20.217 医学ROC曲线统计分析参考软件
  • 欢乐消除开心假日协议解密
  • Android Service知识
  • axios的get请求传入数组参数后端无法接收的问题
  • 奖金发放-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第十四届蓝桥杯第三期模拟赛 【python】
  • Python——函数(重点内容)
  • 2023年如何在Google做外贸