Spring 框架中使用了多种设计模式来实现不同的功能和组件。以下是一些常见的设计模式在 Spring 源码中的应用示例:
-
单例模式(Singleton):Spring 使用单例模式来管理 Bean 实例,默认情况下,Spring 容器中的 Bean 是单例的。例如,
DefaultListableBeanFactory
类中的getSingleton
方法用于获取单例 Bean 实例。 -
工厂模式(Factory):Spring 使用工厂模式来创建和管理对象。例如,
BeanFactory
接口定义了创建和获取 Bean 的方法,DefaultListableBeanFactory
类是一个具体的工厂类。 -
代理模式(Proxy):Spring 使用代理模式来实现 AOP(面向切面编程)。例如,
ProxyFactory
类用于创建代理对象,JdkDynamicAopProxy
和CglibAopProxy
类实现了基于 JDK 动态代理和 CGLIB 的代理。 -
观察者模式(Observer):Spring 使用观察者模式来实现事件机制。例如,
ApplicationEvent
类表示一个事件,ApplicationListener
接口用于监听事件,ApplicationEventPublisher
接口用于发布事件。 -
模板方法模式(Template Method):Spring 使用模板方法模式来定义一些通用的操作流程,并在子类中实现具体细节。例如,
JdbcTemplate
类定义了数据库操作的通用流程,具体的 SQL 语句由子类实现。 -
适配器模式(Adapter):Spring 使用适配器模式来适配不同的接口和类。例如,
HandlerAdapter
接口用于适配不同的处理器类型,如Controller
、HttpRequestHandler
等。 -
策略模式(Strategy):Spring 使用策略模式来实现不同的策略选项。例如,
ConversionService
接口用于类型转换,可以通过配置不同的转换策略实现。 -
迭代器模式(Iterator):Spring 使用迭代器模式来遍历集合和容器。例如,
Iterator
接口用于遍历集合中的元素,BeanDefinition
中的getPropertyValues
方法返回一个属性值的迭代器。
以上只是一些在 Spring 源码中常见的设计模式示例,实际上,Spring 框架使用了更多的设计模式来实现不同的功能和组件。阅读 Spring 源码可以更深入地了解这些设计模式的具体应用和实现细节。