2024-03-23 09:39

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

少尉

JavaEE

(68)

(0)

收藏

工厂模式

工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,使得应用程序可以更加灵活和可维护;


Spring使用工厂模式可以通过 BeanFactory 、FactoryBean 创建 bean 对象,这两个接口都是用于创建对象,都可以看做是工厂方法模式的实现。


BeanFactory:其中IOC的设计就涉及到BeanFactory,是Spring容器的顶层接口,也是Bean工厂最上层的接口,其会有很多工厂实现,我们可以把BeanFactory看成是一种工厂方法模式。


FactoryBean是一个定制化工厂,其会存在于BeanFactory创建对象的过程中,当有需要时,会通过FactoryBean去自定制个性化的Bean,从而Spring框架提高扩展能力。


单例模式

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。


Bean默认就是单例模式(面试时手写单例模式也是个高频面试题),每个 Bean 只会被创建一次,并且可以在整个应用程序中共享。


代理模式

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


装饰者模式

代理模式是一种结构型设计模式,装饰者模式通过组合的方式来扩展对象的行为,而不依赖于继承,也就是说虽然类的框架中包含继承,但只是为了获取正确的类型,而不是继承一种行为。行为来自于装饰者和基础组件,或者与其他装饰者之间的组合关系。


当项目需要连接多个数据库,不同的客户根据需要去访问不同的数据库,装饰者模式可以根据客户的需求动态切换不同的数据源


适配器模式

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


Spring AOP的 Advice中使用到了适配器模式,以及Spring MVC中适配 Controller时也用到了适配器模式


模板方法模式

模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。


主要用来减少代码重复,例如JdbcTemplate代理模式,提供了一种简单的方式来执行 SQL 查询和更新操作,主要体现在Spring的AOP模块功能实现。


观察者模式

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


策略模式

策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装起来,使得它们可以互相替换。


SyncTaskExecutor:直接在调用线程中执行任务,没有真正的异步;


SimpleAsyncTaskExecutor:使用单线程池异步执行任务;


ConcurrentTaskExecutor:使用线程池异步执行任务;


SimpleTransactionalTaskExecutor:支持事务的 SimpleAsyncTaskExecutor。 这样,我们可以根据自己的需求选择不同的实现策略,使用策略模式的好处有以下这些:


可以在不修改原代码的基础上选择不同的算法或策略;


可减少程序中的条件语句,根据环境改变选择合适的策略;


扩展性好,如果有新的策略出现,只需要创建一个新的策略类,无须修改原代码。

0条评论

点击登录参与评论