龙空技术网

Java面试题之Spring 用了哪些设计模式?

开心的小De 90

前言:

当前咱们对“java常用的设计模式面试题”大致比较注重,同学们都需要知道一些“java常用的设计模式面试题”的相关内容。那么小编同时在网上搜集了一些有关“java常用的设计模式面试题””的相关资讯,希望兄弟们能喜欢,小伙伴们快快来学习一下吧!

Spring 中用到了哪些设计模式?网上有比较多的说法,我个人也花了一些时间总结了一下,有任何错误地方的话,各位大佬可以留言指出一下,谢谢大家!

1.工厂模式(Factory Pattern):Spring 中的 Bean 工厂(BeanFactory)和应用上下文(ApplicationContext)是基于工厂模式实现的。它们负责创建和管理对象的实例,从而将对象的创建与使用解耦。

它们之间的主要区别如下:

初始化时机:

BeanFactory:在使用时才会实例化和初始化 Bean。

ApplicationContext:在容器启动时就对所有 Bean 进行实例化和初始化。

加载配置文件:

BeanFactory:需要手动读取和解析配置文件,例如 XML 文件。

ApplicationContext:可以自动加载和解析配置文件,支持多种配置文件格式,如 XML、Java 注解和 Java 代码。

功能扩展:

BeanFactory:提供基本的 Bean 加载和依赖注入的功能。

ApplicationContext:在 BeanFactory 的基础上提供了更多的企业级功能,如国际化消息处理、事件发布、AOP 等。

性能:

BeanFactory:相对较轻量级,延迟加载,只有在需要使用 Bean 时才会实例化。

ApplicationContext:在启动时进行预加载,提供更快的访问速度和响应时间。

面向功能:

BeanFactory:主要用于单纯地管理和装配 Bean。

ApplicationContext:提供了更多的上下文信息和功能,是更加高级和功能丰富的容器。

2.单例模式(Singleton Pattern):在 Spring 中,单例模式的应用主要表现在以下几个方面:

Bean 单例模式:Spring 默认将所有的 Bean 都配置为单例,即每个 Bean 在容器中只有一个实例。这样可以确保在应用程序中共享同一个实例,减少资源消耗。

ApplicationContext 单例模式:Spring 的 ApplicationContext(应用上下文)本身也是一个单例对象。在应用启动过程中,ApplicationContext 被创建并初始化,然后在整个应用生命周期内被共享和重用。

Java 对象实例缓存:Spring 通过单例模式来缓存和重用一些重量级的 Java 对象,例如数据库连接池、线程池等资源对象。这样可以避免频繁地创建和销毁这些对象,提高性能和效率。

使用单例模式有助于管理资源和减少对象的创建开销,同时在某些情况下也可以确保对象的唯一性和一致性。然而,需要注意的是,单例模式并非适用于所有情况,有些场景下可能需要创建多个实例或使用其他设计模式来满足特定需求。

3.代理模式(Proxy Pattern):Spring AOP(面向切面编程)使用了代理模式来实现横切关注点(如事务管理、日志记录等)。Spring 通过动态代理技术,在运行时生成代理对象,并将横切逻辑织入到目标对象的方法中。

4.模板模式(Template Pattern):Spring 提供了一些模板类(如 JdbcTemplate、HibernateTemplate 等),它们定义了一些模板方法,简化了开发流程,使得开发者只需关注核心业务逻辑。

5.观察者模式(Observer Pattern):Spring 的事件机制基于观察者模式。通过定义事件和监听器,对象之间可以实现松耦合的通信,当事件发生时,监听器会接收到通知并执行相应的操作。

6.策略模式(Strategy Pattern):在 Spring 中,可以使用不同的实现类来实现接口,并在运行时根据需要动态地选择合适的实现类。这种灵活的策略选择机制使得 Spring 在处理不同情况下能够采用不同的策略。

除了上述设计模式,Spring 还涉及其它设计模式,如适配器模式、装饰器模式等,以满足不同需求和场景下的设计和开发要求。

欢迎大家在评论区畅所欲言,整理文章不易,也希望各位小伙伴动动发财的小手点赞加关注鼓励一下,谢谢大家了!

标签: #java常用的设计模式面试题 #java中的设计模式举例分析