提示:文章先作为初版,等后续时间充足后,补充更深的内容


文章目录

  • Spring中的设计模式
  • 一、简介



Spring中的设计模式

一、简介

单例模式(Singleton Pattern):Spring容器中管理的Bean默认为单例模式,保证在整个应用程序中只存在一个实例。【单例Bean,SingletonTargetSource,DefaultBeanNameGenerator,SimpleAutowireCandidateResolver,AnnotationAwareOrderComparator】

工厂模式(Factory Pattern):Spring使用工厂模式创建和管理Bean,通过IoC容器来实例化、配置和组装对象。【BeanFactory,FactoryBean,ProxyFactory】

代理模式(Proxy Pattern):Spring AOP(面向切面编程)基于代理模式实现,通过动态代理机制为目标对象提供额外的功能,如事务管理、性能监控等。【方式生成了代理对象的地方就用到了代理模式,AOP,@Configuration,@Lazy】

观察者模式(Observer Pattern):Spring的事件机制基于观察者模式,通过事件发布和订阅的方式实现模块之间的解耦。【ApplicationListener->事件监听机制,AdvisedSupportListener->ProxyFactory可以提交此监听用来监听ProxyFactory创建代理对象完成事件 添加事件等】

模板方法模式(Template Method Pattern):Spring中的JdbcTemplate和HibernateTemplate等模板类使用了模板方法模式,定义了算法骨架,将具体实现延迟到子类或回调方法中。【AbstractApplicationContext下的postProcessBeanFactory->子类可以继续处理BeanFactory,下的onRefresh->子类可以做一些额外的初始化】

策略模式(Strategy Pattern):Spring中的Bean后处理器(BeanPostProcessor)和切面(Aspect)等使用了策略模式,允许开发者在特定的时机插入自定义的逻辑。【InstantiationStrategy->Spring需要根据BeanDefinition来初始化实例Bean但是可以选择不同的策略进行实例化,BeanNameGenerator->beanName生成器】

适配器模式(Adapter Pattern):Spring的适配器模式用于将现有的类或接口适配到Spring容器中,以满足框架的要求。【ApplicationListenerMethodAdapter->将@EventListener注解的方法适配成ApplicationListener,AdvisorAdapter->把Advisor适配成MethodInterceptor】

依赖注入模式(Dependency Injection Pattern):Spring的核心特性之一是依赖注入,通过该模式将对象的依赖关系外部化,使得对象之间的解耦更加灵活。

装饰器模式(Decorator Pattern):Spring的Bean装饰器(BeanDecorator)允许在不修改原始对象的情况下,动态地添加额外的功能。【BeanWrapper->比单纯的Bean对象功能更加强大,HttpRequestWrapper】

原型模式(Prototype Pattern):是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需显式地使用构造函数。原型模式通过克隆(复制)现有对象来创建新对象,从而避免了昂贵的对象创建过程。【原型Bean,PrototypeTargetSource,PrototypeAspectInstanceFactory】

构造器模式(Builder Pattern):一种创建型设计模式,用于创建复杂对象。该模式通过将对象的构造过程分解为多个步骤,并提供一个独立的构造器(Builder)来逐步构建对象。通过使用构造器,可以灵活地配置对象的属性,并按照需要设置可选参数,最终构建出一个完整的对象。【BeanDefinitionBuilder->BeanDefinition构造器,BeanFactoryAspectJAdvisorsBuilder->解析并构造@AspectJ注解的Bean中所定义的Advisor,StringBuilder】

访问者模式(Visitor Pattern):一种行为型设计模式,它用于处理对象结构中的元素,同时将对元素的操作封装在不同的访问者对象中。通过使用访问者模式,可以在不改变元素类的前提下,定义新的操作并应用于元素集合中的每个元素。【PropertyAccessor->属性访问器,用来访问和设置某个对象的某个属性。MessageSourceAccessor->国际化资源访问器】

责任链模式(Chain of Responsibility Pattern):一种行为型设计模式,它通过一系列的处理器对象形成一个链,将请求在链上传递,直到有处理器能够处理该请求为止。每个处理器对象都可以选择将请求处理自己或者将其传递给链中的下一个处理器。【DefaultAdvisorChainFactory->负责构造一条AdvisorChain代理对象执行某个方法时会经过AdvisorChain中的每个Advisor,QualifierAnnotationAutowireCandidateResolver】