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 实现类,不同的实现类负责不同的资源访问逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<Halcon> 局部放大显示

局部放大显示 当读取的图片为超大分辨率时,我们需要对局部位置或定位到的位置在显示窗口放大显示,主要算子为dev_set_part。 read_image (Image, printer_chip/printer_chip_01) gen_rectangle1 (ROI_0, 617.275, 1347.28, 828.349, 1449.5) dev_set_p…

springcloud微服务篇--2.微服务之间的调用

一、微服务案例需求1: 根据订单id查询订单的同时,把订单所属的用户信息一起返回 1、新建订单项目,用户服务。 2.RestTemplate实现微服务之间的访问。 在order-service的OrderApplication中注册RestTemplate 注入调用: Autowire…

Android 12.0 Launcher3定制化之修改添加的默认文件夹为9宫格样式

1. 概述 在12.0的系统产品rom定制化开发中,对于Launcher3的定制功能也是不少的,比如在Launcher3中添加默认文件夹,把默认的app添加的文件夹里面,其他的app 然后按顺序排序。在文件夹布局就是默认的9宫格布局,接下来分析下相关源码来实现相关功能的实现 2.Launcher3定制化…

tcn 时间序列回归实例

目录 torch-tcn库 示例代码 自定义实现tcn层 torch-tcn库 pip install torch-tcn 示例代码 import torch from torch import nn from tcn import TCNLayerbatch_size = 16 seq_length = 100 # 序列长度 n_features = 32 # 特征数量 n_outputs = 10 # 输出大小# 输入…

C#基础——字符串、字符串API

C#基础——字符串、字符串API 字符串是 System.String 类的实例。字符串表示文本数据,可以包含字母、数字、符号和空格等字符。 创建字符串 string str1 "Hello, World!"; // 使用双引号创建字符串 string str2 "This is a C# string.";字符…

Pyhon基于YOLOV实现的车辆品牌及型号检测项目源码+模型+项目文档

项目运行运行录屏: Pyhon基于YOLOV实现的车辆品牌及型号检测项目运行录屏 完整代码下载地址:Pyhon基于YOLOV实现的车辆品牌及型号检测项目 项目背景: 车辆检测及型号识别广泛应用于物业,交通等的管理场景中。通过在停车场出入口…

【PTA刷题+代码+详解】求二叉树度为1的结点个数(递归法)

文章目录 题目C代码详解 题目 在二叉树T中,其度为1的结点是指某结点只有左孩子或只有右孩子。利用递归方法求二叉树T的度为1的结点个数。 1)如果TNULL,则是空树,度为1的结点个数为0,返回值为0; 2&#xff0…

上海亚商投顾:沪指收复3000点,房地产板块集体走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日窄幅震荡,创业板指走势较弱,科创50指数跌近1%。房地产板块集体走强&#xff0…

深度学习中的各类评价指标

深度学习中的各类评价指标 1 Dice Loss2 Precision(精度)3 Recall(召回率)4 F-Score5 mAP 1 Dice Loss Dice Loss,也叫Soft Dice Coefficient,是一种用于图像分割任务的损失函数。它基于目标分割图像与模型…

Apache Flink(十一):Flink集群部署-Standalone集群部署

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 节点划分

设计模式——原型模式(创建型)

引言 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 问题 如果你有一个对象, 并希望生成与其完全相同的一个复制品, 你该如何实现呢? 首先, 你必须新建一个属于…

C#基础——语法学习

C#的基本语法 在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 .sln文件:将项目和解决方案项结合到一起 .vs文件夹:用来存储当前解决方案中关于用户的设置和自定义项,比如断点,主题等。(一般都将其…

GPT-4:背景、技术特点、发展、应用与前景

一、引言 随着人工智能技术的飞速发展,自然语言处理领域涌现出越来越多的创新成果。其中,GPT-4(Generative Pre-trained Transformer 4)作为OpenAI公司推出的最新一代大型语言模型,凭借其卓越的性能和广泛的应用场景&…

2312d,把alloca注入调用者域

原文 有以下技巧.因为无法推导长度,因此不理想,但这成功地把alloca注入到调用者域中. import core.stdc.stdlib:alloca; import std.range:ElementType; import core.lifetime:moveEmplace; struct VLA(T,alias len){T[] storage;this(R)(R initializer,return void[] storage…

什么是设计模式

一、概述 1、设计模式是解决某些问题的办法 2、设计模式不是凭空想象出来的,是经验的总结和积累 3、设计模式是不断的发展的 4、各个行业都有自己的设计模式 二、设计模式的基本要素 设计模式一般包括模式的名称、问题、目的、解决方案、效果、实例代码和相关…

C++ 类型萃取

什么是 type_traits 在C中,类型萃取(type_traits)是一种编译时技术,用于在编译期间获取和操作类型的信息。 主要用于泛型编程以及在编译时做出决策。 类型萃取可以帮我们检查和处理类型特性,从而优化代码、避免错误或…

飞天使-linux操作的一些技巧与知识点2-TCP的三次握手以及四次挥手以及转换状态

文章目录 TCP 的三次握手四次挥手转换状态 TCP 的三次握手 第一次,客户端与服务端建立链接,需要发送请求连接的消息 第二次,服务端接口到数据后,返回一个确认的操作*(至此客户端和服务端链路建立成功) 第三…

如何利用宝塔面板和docker快速部署网站

当你有了一台服务器,就会折腾往这台服务器上部署各种好玩的网站。市面上有许多开源的网站项目,通过docker技术可以快速部署并使用,本文将以部署filebrowser举例介绍网站部署的基本流程。 1. 安装宝塔面板 宝塔面板是一款开源的网站运维工具…

TLF35584 定时唤醒功_理论篇

1 简介 TLF35584在连接到电池(Power-On-Reset POR)时自动打开,并进入初始化状态,在该状态下设备将被配置。配置成功后,通过SPI命令将设备发送到正常状态。从正常或唤醒状态,设备可以发送到低功率状态(睡眠或待机)通过SPI命令。   WAK和ENA信号是离开低功率状态(或故障安全…

Mysql的多表联合查询

内连接 隐式内连接 select column from tb1,tb2 where 条件; 显示内连接 关键字:[inner] join on 显示内连接与外连接的不同是新增的关键字,inner join 以及 使用on 替换了where select column from tb1 [inner] join tb2 on 条件; 外连接 左外…