Spring 中经典的 9 种设计模式

2023-09-22 08:15:41

1、简单工厂

        BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。

2、工厂方法

        FactoryBean接口。

3、单例模式

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

4、适配器模式

        SpringMVC中的适配器HandlerAdatper。

5、装饰器模式

        Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。

6、代理模式

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

  • 动态代理:在内存中构建的,不需要手动编写代理类

  • 静态代理:需要手工编写代理类,代理类引用被代理对象。

7、观察者模式

        spring的事件驱动模型使用的是 观察者模式 ,Spring中Observer模式常用的地方是listener的实现。

8、策略模式

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

9、模板方法模式

        定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

更多推荐

GitHub上标星23K+的Redis进阶笔记(应用+原理+集群+拓展+源码)

先来看几道Redis面试题:redis为什么是key,value的,为什么不是支持SQL的?redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看)redis的持久化开启了RDB和AOF下重启服务是如何加载的?(10个人9个回答错误)redis如果做集群该如何规划?AKF/CAP如何实现和设计?10万

Android gradle dependency tree change(依赖树变化)监控实现

文章目录前言基本原理执行流程diff报告不同分支merge过来的diff报告同个分支产生的merge报告同个分支提交的diff报告具体实现原理我们需要监控怎样的Dendenpency变化怎样获取dependencyTree`project.configurations`方式./gradlewdependenciesAs

Git常用命令diff和mv

Git常用命令diff和mv1、diff#查看工作区和暂存区所有文件的对比#该命令可以显示尚未添加到stage的文件的变更$gitdiff#查看工作区和暂存区单个文件的对比$gitdifffile#显示暂存区和上一个commit的差异#查看暂存区与指定提交版本的不同,版本可缺省为HEAD$gitdiff--cached

Spring常考知识点(IOC、事务、容器等)

Spring需要理解的问题谈谈你对IOC的理解单例Bean和单例模式Spring事务传播机制Spring事务什么时候会失效Spring中的Bean创建的⽣命周期有哪些步骤Spring中Bean是线程安全的吗ApplicationContext和BeanFactory有什么区别Spring中的事务是如何实现的Spring

iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程

文章目录一、环境准备二、基础软件三、扩展:usb拓展插件一、环境准备1、下载VMware虚拟机的壳子,安装并注册软件(可以百度注册码),最新版本:v172、下MacOS系统iOS镜像文件,用于vmware虚拟机安装,当前镜像最新版本:v11.6二、基础软件1、MacOS系统找到AppStore,这点同iphone操作,

.NET的CancellationTokenSource和ManualResetEvent结合使用

一、CancellationTokenSource是C#中的一个类,用于取消异步操作。它提供了一种机制,可以取消一个或多个异步操作。CancellationTokenSource包含以下主要方法:Cancel():该方法会取消所有挂起的操作,并引发OperationCanceledException异常。如果在调用Ca

Linux系统编程6(线程互斥,锁,同步,生产消费模型)

上篇文章介绍完线程的概念后,我们将在这篇文章中初步探讨线程编程以及线程应用中的问题,这篇文章将以抢票系统为例,贯穿整篇文章。笔者将介绍在多线程编程中会出现的问题,什么是同步?什么是互斥?为什么多线程编程常有加锁的概念,什么又是生产者和消费者模型,读完这篇文章,你会得到相应的答案,笔者这里强烈建议各位把文中给出的demo

App Store上线规范及流程

上线一个应用到AppStore需要遵循苹果的规范和流程,以确保应用的质量和安全性。以下是上线应用到AppStore的一般规范和流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.开发和测试:在上线应用之前,确保应用已经经过了充分的开发和测试阶段。这包括功能测试、性能测试、兼容性

Python学习之——str/unicode/bytes

Python学习之——str/unicode/bytes参考字符串和字节串区分Unicode和Encodingspython2python3一个典型的问题参考Pythonstrvsunicodetypes谈谈python2,3中的str、unicodeUnicode编码及UTF-32,UTF-16和UTF-8https

【Oracle】Oracle系列之二--Oracle数据字典

文章目录往期回顾前言1.什么是Oracle数据字典2.数据字典的内容(1)X$表(2)数据字典表、数据字典视图(3)动态性能视图3.数据字典应用示例(1)查询表的信息(2)查询索引的信息(3)查询用户的信息(4)查询表空间的信息(5)查询数据文件的信息(6)查询数据库的性能数据往期回顾【Oracle】Oracle系列–

【腾讯云 Cloud Studio 实战训练营】快速构建React完成点餐H5页面

一,前言1.1相关链接官网地址:CloudStudio官方文档地址:CloudStudio(云端IDE)简介|CloudStudio1.2CloudStudio(云端IDE)简介CloudStudio是基于浏览器的集成式开发环境(IDE),用户在使用CloudStudio时无需安装,随时随地打开浏览器就能在线编程,给开

热文推荐