Spring 是一个非常流行的 Java 开发框架,它使用了很多设计模式来实现其功能,以下是 Spring 中包含的一些常见的设计模式。

1.工厂模式

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,使得应用程序可以更加灵活和可维护。在 Spring 中,FactoryBean 就是一个工厂模式的实现,使用它的工厂模式就可以创建出来其他的 Bean 对象。

2.单例模式

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在 Spring 中,Bean 默认是单例的,这意味着每个 Bean 只会被创建一次,并且可以在整个应用程序中共享。

3.代理模式

代理模式是一种结构型设计模式,它允许开发人员在不修改原有代码的情况下,向应用程序中添加新的功能。在 Spring AOP(面向切面编程)就是使用代理模式的实现,它允许开发人员在方法调用前后执行一些自定义的操作,比如日志记录、性能监控等。

4.观察者模式

观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Spring 事件驱动模型使用观察者模式,ApplicationEventPublisher 事件发布者将事件发布给 ApplicationEventMulticaster 事件广播器,该广播器将事件派发给 @EventListener 注解的事件监听者。

5.模板方法模式

模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。在 Spring 中,JdbcTemplate 就是一个模板方法模式的实现,它提供了一种简单的方式来执行 SQL 查询和更新操作。

6.适配器模式

适配器模式是一种结构型设计模式,它允许开发人员将一个类的接口转换成另一个类的接口,以满足客户端的需求。在 Spring 中,适配器模式常用于将不同类型的对象转换成统一的接口,比如将 Servlet API 转换成 Spring MVC 的控制器接口。

7.策略模式

策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使得它们可以互相替换。Spring 中的 TaskExecutor,TaskExecutor 提供了很多实现,比如以下这些:

  • SyncTaskExecutor:直接在调用线程中执行任务,没有真正的异步;
  • SimpleAsyncTaskExecutor:使用单线程池异步执行任务;
  • ConcurrentTaskExecutor:使用线程池异步执行任务;
  • SimpleTransactionalTaskExecutor:支持事务的 SimpleAsyncTaskExecutor。 这样,我们可以根据自己的需求选择不同的实现策略,使用策略模式的好处有以下这些:
  1. 可以在不修改原代码的基础上选择不同的算法或策略;
  2. 可减少程序中的条件语句,根据环境改变选择合适的策略;
  3. 扩展性好,如果有新的策略出现,只需要创建一个新的策略类,无须修改原代码。

特殊说明

以上内容来自我的《Java 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:

加我微信咨询:vipStone【备注:训练营】