【Spring6】| 简述Spring中的八大模式

这篇具有很好参考价值的文章主要介绍了【Spring6】| 简述Spring中的八大模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:Spring中的八大模式

Spring中的八大模式,有很多我们前面已经讲过了,这里只需要大概有个印象,后期会出一个专门对23种设计模式的详解!

1. 简单工厂模式

BeanFactory的getBean()方法,通过唯一标识来获取Bean对象。是典型的简单工厂模式(静态工厂模式);主要包括三部分:抽象产品角色、具体产品角色、工厂类角色;这个静态方法所在的工厂类相当于一个上帝类,或者说全能类,所有产品一个工厂,一旦出现故障,整个系统就会瘫痪;并且不符合OCP开闭原则。不属于23种设计模式!

2. 工厂方法模式

FactoryBean是典型的工厂方法模式;主要包括四部分:抽象产品角色、具体产品角色、抽象工厂角色、具体工厂角色;符合OCP开闭原则,但是存在类爆炸问题!在配置文件中通过factory-method属性来指定工厂方法,该方法是一个实例方法。

3. 单例模式

Spring用的是双重判断加锁的单例模式;单列模式的实现,包括饿汉式和懒汉式;请看下面代码,我们之前讲解Bean的循环依赖的时候见过:

【Spring6】| 简述Spring中的八大模式

4. 代理模式

代理模式包括静态代理和动态代理,动态代理又包括JDK动态代理(只能代理接口)和CJLIB动态代理(类和接口都可以代理)。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(监听器)的实现。Servlet的ServletContextListener就是一个观察者模式:其中ServletContextListener就是观察者、ServletContext就是被观察者、ServletContext对象被创建或ServletContext对象被销毁等就是事件。

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

7. 策略模式

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

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

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

8. 模板方法模式

Spring中的JdbcTemplate类就是一个模板类。它就是一个模板方法设计模式的体现。在模板类的模板方法execute中编写核心算法,具体的实现步骤在子类中完成。文章来源地址https://www.toymoban.com/news/detail-419814.html

到了这里,关于【Spring6】| 简述Spring中的八大模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2、Spring6 入门

    JDK:Java17+ (Spring6要求JDK最低版本是Java17) Maven:3.6+ Spring:6.0.2 点击“Create”     点击 Create 完成.   查看依赖:   在resources目录创建一个 Spring 配置文件 bean.xml(配置文件名称可随意命名,如:springs.xml)  以前我们创建对象的方式是通过 的方式,但是现在我们可以把创建

    2024年02月10日
    浏览(29)
  • spring6-事务

    1、JdbcTemplate 1.1、简介 Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 1.2、准备工作 ①搭建子模块 搭建子模块:spring-jdbc-tx ②加入依赖 ③创建jdbc.properties ④配置Spring的配置文件 beans.xml ⑤准备数据库与测试表 1.3、实现CURD ①装配 JdbcTemplate 创建测试类,整

    2024年02月08日
    浏览(32)
  • spring6详细讲解

    1.1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spr

    2024年02月10日
    浏览(74)
  • Spring6 初始

    @ 目录 Spring6 初始 每博一文案: 1. 初始 Spring6 1.1 OCP开闭原则 1.2 依赖倒置原则DIP 1.3 控制反转IoC 2. Spring 初始 2.1 Spring特点 2.2 Spring6 的下载: 2.3 Spring的jar文件 3. 第一个Spring 程序的编写 4. 第一个Spring程序详细剖析 4.1 bean标签的id属性可以重复吗? 4.2 底层是怎么创建对象的,是

    2024年02月17日
    浏览(39)
  • Spring6-01

    什么是开闭原则? 在软件开发过程中应当对扩展开放,对修改关闭。 也就是说如果在进行功能扩展的时候,添加额外的类是没有问题的,但因为功能扩展而修改之前运行正常的程序,这是不被允许的。因为一旦修改了之前运行正常的程序,就会导致项目整体要进行整体的全

    2024年02月08日
    浏览(84)
  • 【Spring6】| Spring IoC注解式开发

    目录 一:Spring IoC注解式开发 1. 回顾注解 2. 声明Bean的四个注解 3. Spring注解的使用 4. 选择性实例化Bean 5. 负责注入的注解(重点) 5.1 @Value 5.2 @Autowired与@Qualifier 5.3 @Resource 6. 全注解式开发 注解的存在主要是为了简化XML的配置 ,Spring6倡导全注解开发。 我们来回顾一下:

    2023年04月12日
    浏览(46)
  • Spring6.0 源码部署

    Git JDK17 Gradle(版本号需要和Spring源码中的版本一致) 官网地址

    2024年02月16日
    浏览(45)
  • Spring6源码编译、安装

    名称 版本 jdk 17 gradle 8.1.1 spring源码版本 6.0.9 下载并解压 配置环境变量 验证 下载并解压 配置环境变量 验证 配置镜像仓库 spring在Github官网上有详细的说明文档,可以参考,但按照步骤做辉有些报错😅,还是按照自己总结的步骤来吧。 github源码地址 国内gitcode镜像 官方构建

    2024年02月08日
    浏览(44)
  • Spring6 数据校验 Validation

    在开发中,经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,会把校验的代码和真正的业务处理逻辑 耦合 在一起,而且如果未来要新增一种校验逻辑也需要在修改多个

    2024年02月11日
    浏览(30)
  • spring6-资源操作:Resources

    1、Spring Resources概述 Java的标准java.net.URL类和各种URL前缀的标准处理程序无法满足所有对low-level资源的访问,比如:没有标准化的 URL 实现可用于访问需要从类路径或相对于 ServletContext 获取的资源。并且缺少某些Spring所需要的功能,例如检测某资源是否存在等。 而Spring的Reso

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包