【设计模式】策略模式(1/2)

511 阅读1分钟

介绍

策略模式:定义一系列的算法,把它们一个个封装起来, 并且使它们可以相互替换。

类图

image.png

Spring 中的策略模式

在 Bean 的生命周期中,有一步是 bean 的实例化,该过程由 InstantiationStrategy 完成,该类有两个实现类,分别是 SimpleInstantiationStrategyCglibSubclassingInstantiationStrategy,类图如下: image.png

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;

}

SimpleInstantiationStrategy

CglibSubclassingInstantiationStrategy

示例