Spring框架中的8种设计模式

前言

Spring框架中的8种设计模式分别是:1、简单工厂。2、工厂方法。3、单例模式。4、适配器模

式。5、装饰器模式。6、代理模式。7、观察者模式。8、策略模式.

1、简单工厂

Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象

但是否在传入参数后创建还是传入参数前创建这个要根据具体情况来定。

2、工厂方法

实现了FactoryBean接口的bean是一类叫做factory的bean。其特点是Spring会在使用getBean()调

用获得该bean时,会自动调用该bean的getObject()方法,所以返回的不是factory这个bean,而是

这个bean.getOjbect()方法的返回值。

3、单例模式

Spring依赖注入Bean实例默认是单例的

Spring的依赖注入(包括lazy-init方式)都是发生在AbstractBeanFactory的getBean里。getBean的

doGetBean方法调用getSingleton进行bean的创建。

4、适配器模式

SpringMVC中的适配器HandlerAdatper

HandlerAdatper使得Handler的扩展变得容易,只需要增加一个新的Handler和一个对应的

HandlerAdapter

因此Spring定义了一个适配接口,使得每一种Controller有一种对应的适配器实现类,让适配器代

替controller执行相应的方法。这样在扩展Controller时,只需要增加一个适配器类就完成了

SpringMVC的扩展了。

5、装饰器模式

Spring中用到的包装器模式在类名上有两种表现:

一种是类名中含有Wrapper,另一种是类名中含有Decorator

动态地给一个对象添加一些额外的职责。

就增加功能来说,Decorator模式相比生成子类更为灵活。

6、代理模式

Spring中AOP的底层,就是动态代理模式的实现。

7、观察者模式

Spring 基于观察者模式,实现了自身的事件机制也就是事件驱动模型,事件驱动模型通常也被理

解成观察者或者发布/订阅模型。

8、策略模式

Spring框架的资源访问Resource接口。该接口提供了更强的资源访问能力,Spring 框架本身大量

使用了Resource 接口来访问底层资源。

Rsource 接口是具体资源访问策略的抽象,也是所有资源访问类所实现的接口。

Resource 接口本身没有提供访问任何底层资源的实现逻辑,针对不同的底层资源,Spring 将会提

供不同的Resource 实现类,不同的实现类负责不同的资源访问逻辑。

相关推荐

  1. Spring框架8设计模式

    2023-12-13 16:54:01       57 阅读
  2. Spring框架常用设计模式

    2023-12-13 16:54:01       59 阅读
  3. Spring框架11设计模式设计模式之美)

    2023-12-13 16:54:01       34 阅读
  4. MyBatis框架5设计模式总结

    2023-12-13 16:54:01       59 阅读
  5. Spring经典9设计模式

    2023-12-13 16:54:01       47 阅读
  6. 深入探索Spring框架设计模式精髓

    2023-12-13 16:54:01       29 阅读
  7. Spring 框架用到设计模式

    2023-12-13 16:54:01       30 阅读
  8. Spring框架设计模式:深入剖析

    2023-12-13 16:54:01       22 阅读
  9. Spring整理-Spring框架用了哪些设计模式

    2023-12-13 16:54:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 16:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 16:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 16:54:01       82 阅读
  4. Python语言-面向对象

    2023-12-13 16:54:01       91 阅读

热门阅读

  1. 每日一练 | 华为认证真题练习Day29

    2023-12-13 16:54:01       64 阅读
  2. 选择排序

    2023-12-13 16:54:01       59 阅读
  3. 【Android】通知(未完待续)

    2023-12-13 16:54:01       62 阅读
  4. PHP中什么是命名空间(Namespace)?

    2023-12-13 16:54:01       61 阅读
  5. 多个变量存储同一个地址

    2023-12-13 16:54:01       58 阅读
  6. 只需六个简单步骤即可开发自定义应用程序

    2023-12-13 16:54:01       41 阅读
  7. ADC芯片用途在哪些行业?

    2023-12-13 16:54:01       56 阅读
  8. LeeCode刷题

    2023-12-13 16:54:01       58 阅读
  9. VS Code使用 CMake 或 Makefile管理C++多文件编译

    2023-12-13 16:54:01       60 阅读
  10. C++中用以声明类的另一个关键字——struct

    2023-12-13 16:54:01       63 阅读
  11. digit函数

    2023-12-13 16:54:01       61 阅读