Spring中有哪些设计模式

Spring中有哪些设计模式

  1. 单例模式
  • 单例模式的目的在于确保一个类只有一个实例,并且提供一个全局访问点。很明显,Spring中的单例Bean并非实现了单例模式,单例Bean只能保证在每个容器内部,相同ID的Bean只有一个实例。Spring中的单例模式的实现有TruePointcut#INSTANCE
  1. 建造者模式
  • 建造者模式的目的在于把构建一个复杂对象的过程转换为采用链式的方式构建,不执行最后的构建方法之前对象不可用。Spring中的建造者模式的实现有BeanDefinitionBuilder、SpringApplicationBuilder、HeadersBuilder等。
  1. 适配器模式
  • 适配器模式的目的在于将一个类的接口转换为想要的另一个接口。Spring中适配器模式的实现有HandlerAdapter、DisposableBeanAdapter。其中控制器有多种实现方式,比如@RequestMapping标注的控制器实现,基于Controller接口的实现,基于RouterFunction接口的实现,它们的处理方式都不一样,为了统一调用,必须适配HandlerAdapter接口。
  1. 工厂方法模式
  • 工厂方法模式定义一个创建对象的接口,让子类决定实现哪个类。Spring中的ApplicationContext#getBean()可以视为工厂方法,隐藏了Bean的创建过程和具体实现;FactoryBean、@Bean标注的静态方法和实例方法封装了Bean的创建过程,而ObjectFactory、ObjectProvider工厂可以推迟Bean创建,解决循环依赖以及单例注入多例等问题。
  1. 组合模式
  • 组合模式的目的在于把多个对象作为一个整体统一进行处理,当调用组合对象的接口方法时,其实是委托给具体的实现类来完成。Spring中的组合模式的实现有HandlerMethodArgumentResolverComposite、ViewResolverComposite、HandlerMethodReturnValueHandlerComposite
  1. 装饰器模式
  • 装饰器模式的目的在于给对象动态的添加额外的功能,子类可以灵活的扩展父类。Spring中的装饰器模式的实现有ContentCachingRequestWrapper
  1. 代理模式
  • 代理模式的目的是进行功能增强,避免子类使用继承的方式进行功能扩展,更加注重控制目标的访问。Spring中的代理模式的实现有JdkDynamicAopProxy、ObjenesisCglibAopProxy
  1. 责任链模式
  • 责任链模式的目的是将接受对象形成链路来依次寻找能够处理请求的对象。Spring中的责任链模式的实现有HandlerInterceptor
  1. 模板模式
  • 模板模式在一个操作中定义了大纲,留出一些具体的细节给子类实现。Spring中的模板模式的实现有:大部分以Template命名的类,如JdbcTemplate、TransactionTemplate;很多以Abstract命名的抽象类,比如AbstractApplicationContext
  1. 观察者模式
  • 观察者模式在多个对象之间定义了一对多的依赖关系,当一个对象的状态发生了改变,所有关联的对象会被通知并且自动更新状态。Spring中观察者模式的实现有ApplicationListener、ApplicationEventMulticaster、ApplicationEvent
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值