Spring框架中用到的设计模式

Spring框架广泛使用了设计模式,以提高其灵活性、可扩展性和整体架构的清晰性。以下是一些在Spring框架中应用的设计模式:

  1. 工厂模式(Factory Pattern):
    • Spring使用工厂模式通过BeanFactory和ApplicationContext接口创建和管理Bean实例。
  1. 单例模式(Singleton Pattern):
    • 默认情况下,Spring容器中的Bean是单例的,这意味着Spring只为每个Bean创建一个实例。
  1. 原型模式(Prototype Pattern):
    • 当需要多个实例时,可以将Bean的scope设置为prototype,每次请求Bean时,Spring都会创建一个新的实例。
  1. 代理模式(Proxy Pattern):
    • Spring AOP(面向切面编程)使用代理模式(如JDK动态代理或CGLIB代理)来创建代理对象,以实现方法拦截和增强。
  1. 装饰器模式(Decorator Pattern):
    • Spring的BeanWrapper是装饰器模式的实现,它提供了对Bean的属性进行操作的功能。
  1. 策略模式(Strategy Pattern):
    • Spring中的Resource接口及其实现类是策略模式的例子,它们定义了访问不同类型资源的策略。
  1. 模板方法模式(Template Method Pattern):
    • Spring的JdbcTemplate和其他模板类如RestTemplate使用了模板方法模式,它们提供了固定的算法骨架,并将一些步骤的实现延迟到子类。
  1. 观察者模式(Observer Pattern):
    • Spring的事件发布和监听机制是基于观察者模式的,当一个事件被发布时,所有注册的监听器都会被通知。
  1. 适配器模式(Adapter Pattern):
    • Spring AOP中的AdvisorAdapter是一个适配器,它允许使用不同的通知类型(如前置、后置、环绕通知)。
  1. 命令模式(Command Pattern):
    • Spring的ApplicationContext中的事件机制使用了命令模式,其中事件是命令,监听器是接收者。
  1. 责任链模式(Chain of Responsibility Pattern):
    • Spring MVC中的HandlerInterceptor允许你创建一个拦截器链,这些拦截器可以在请求处理之前或之后执行。
  1. 构建器模式(Builder Pattern):
    • Spring的BeanDefinitionBuilder使用了构建器模式来构建BeanDefinition对象。

这些设计模式的运用使得Spring框架具有很高的模块化和灵活性,同时也使得开发人员能够更加方便地使用和扩展Spring框架。


工厂方法模式:AbstractBeanFactory 。
抽象工厂模式:在 Spring 中,BeanFactory
单例模式:Spring中创建单例。
建造者模式:解析xml文件
原型模式:在创建ioc容器后,通过getBean()获取bean对象时,往里追可以发现在核心方法处spring对bean的scope属性进行了判断,配置了prototype时。
适配器模式:spring AOP中的MethodBeforeAdviceAdapter类。
装饰模式:TransactionAwareCacheDecorator 类
代理模式:spring中代理有两种,Jdk代理方式和CGLIB。
外观模式:Tomcat 中,catalina.jar 中的 RequestFacade 和 ResponseFacade 。
桥接模式:JDBC
组合模式:CompositeCacheManager,Mybatis 在处理 xml 动态 sql 中用到了。
享元模式:String常量池, Integer 的静态内部类 IntegerCache。
策略模式:Cglib2AopProxy和JdkDynamicAopProxy分别代表两种策略的实现方式。
模板方法模式:JdbcTemplate实现了一系列常用的数据访问的算法骨架。
观察者模式: ApplicationListener, ContextLoaderListener等。
迭代器模式:集合。
责任链模式:handler,filter,Intercept。
命令模式:Tomcat 中命令模式在 Connector 和 Container 组件之间有体现。
备忘录模式:spring-webflow 中的stateManageableMessageContext.createMessageMemento()
状态模式:spring-statemachine spring状态机
访问者模式:Spring 中的 BeanDefinitionVisitor 类主要用于访问 BeanDefinition。
中介者模式:Java web 开发中 MVC 模式(Model-View-Controller)就用到了中介者模式,Controller 就是 Model 和 View 的中介
解释器模式:在 Spring 中,ExpressionParser 接口内部采用的是解释器模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值