Spring中用到了哪些设计模式?

本文分享了Spring框架中8种常用的设计模式,包括工厂模式、单例模式、装饰器模式等,并详细解释了它们的具体应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​一位应届毕业生被问到这样一道面试题,说Spring用到了哪些设计模式?其实只要Spring使用得够熟练,回答这道题还是非常轻松的。因为Spring的命名非常规范,基本上从类名就可以看得出来用到了哪些设计模式。

今天,我给大家分享一下我的理解。

我给大家总结以下8种设计模式在Spring中的应用:

1、工厂模式。

Spring的BeanFactory类,就是使用了简单工厂模式。它主要提供getBean()方法,用来创建对象的实例;我们见得比较多的ApplicationContext也是继承自BeanFactory。

2、单例模式。

Spring中的Bean默认为singleton单例。我们可以通过配置Bean的作用域scope参数来进行修改。Spring Bean一共有5种内置的作用域,分别是singleton、prototype、request、session、globalSession。

3、装饰器模式。

在Spring中,只要见到以Wrapper命名的类基本都是使用装饰器模式。比如BeanWrapper,用来访问Bean的属性和方法。

4、策略模式。

Spring中Bean的实例化采用的就是策略模式。因为Bean的实例化包含原生对象的实例化,和代理对象的实例化,不同对象实例化的逻辑也不一样,所以实例化策略也不一样,比如SimpleInstantiationStrategy就是Spring中默认的实例化策略。

5、适配器模式。

在Spring,只要是以Adapter命名的类基本都是适配器模式的应用。比如MVC模块中的HandlerAdapter。

6、代理模式。

比如AOP模块中的AopProxy,用到了JDK的动态代理和CGLIB字节码生成技术;

7、模板方法模式。

主要用来解决代码重复的问题。Spring提供了非常多的模板类来减少重复代码,基本都是以Template结尾,比如RestTemplate,JmsTemplate,JdbcTemplate。

8、观察者模式。

主要用于当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知,在Spring中一般以Listener结尾,比如ApplicationListener等等。

当然,Spring是一个非常经典的框架,它用的的设计模式也非常多。而且很多设计模式经常是混合使用的,都是你中有我,我中有你。所以,我们在阅读代码的时候,还不能简单地断定某个类就一定是只用了某一种设计模式。

以上就是我对Spring中主要设计模式的分享。

关注公众号领取更多面试资料

 

Spring使用了许多设计模式,包括但不限于: 1. 单例模式:Spring中的Bean默认是单例的,即每个Bean在容器中仅存在一个实例。 2. 工厂模式:Spring中的BeanFactory和ApplicationContext都是工厂模式的具体实现,用于创建和管理Bean对象。 3. 代理模式:Spring中的AOP就是基于代理模式实现的,通过代理对象对目标对象进行增强。 4. 观察者模式:Spring中的事件机制就是观察者模式的一种实现方式,通过对事件的发布和监听实现不同组件之间的解耦。 关于工厂设计模式,它是一种创建型设计模式,用于将对象的创建过程封装在工厂类中。工厂类负责创建实例,并向客户端隐藏创建逻辑,使客户端只需要关心如何使用对象而不需要关心如何创建对象。工厂模式分为简单工厂模式、工厂方法模式和抽象工厂模式三种实现方式。 简单工厂模式是通过一个工厂类提供一个静态方法或者非静态方法来创建对象,客户端只需要通过传递参数来获取所需的对象。 工厂方法模式是将每个对象的创建过程都放在一个工厂类中,每个对象都有对应的工厂类,客户端需要通过调用不同的工厂类来获取所需的对象。 抽象工厂模式是将每个对象的创建过程都放在一个抽象工厂类中,每个对象都有对应的具体工厂类,客户端需要通过调用不同的具体工厂类来获取所需的对象。 在Spring中,我们通常使用工厂方法模式和抽象工厂模式来创建和管理Bean对象。例如,我们可以使用工厂方法模式将不同类型的Bean创建逻辑放在不同的工厂类中,客户端需要调用相应的工厂类来获取所需的Bean对象;我们也可以使用抽象工厂模式将不同类型的Bean创建逻辑放在一个抽象工厂类中,每个具体工厂类负责创建不同类型的Bean对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值