介绍
策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可以相互替换。
类图:
Spring 中的策略模式
在 Bean 的生命周期中,有一步是 bean 的实例化,该过程由 InstantiationStrategy 完成,该类有两个实现类,分别是 SimpleInstantiationStrategy、CglibSubclassingInstantiationStrategy,类图如下:
Bean 实例化策略
InstantiationStrategy 中定义了三个初始化 bean 的接口
public interface InstantiationStrategy {
// 通过无参构造函数创建 bean 实例
Object instantiate(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner)
throws BeansException;
// 通过指定构造函数创建 bean 实例
Object instantiate(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner,
Constructor<?> ctor, Object... args) throws BeansException;
// 通过工厂方法创建 bean 实例
Object instantiate(RootBeanDefinition bd, @Nullable String beanName, BeanFactory owner,
@Nullable Object factoryBean, Method factoryMethod, Object... args)
throws BeansException;
}