工厂模式的应用进化版
之前介绍过借助Spring依赖注入来创建工厂的工厂模式应用,但是那种方式存在一定局限,一定要为实例bean创建别名,且要通过别名来获取到实例bean。现在依然是依赖Spring框架,介绍一种采用applicationContext.getBean(Class<T> var1)方法通过Class类来获取实例bean的工厂模式应用。
1.创建实例bean接口
1 | public interface FailedStrategy { |
2.创建实例bean实现类
创建工厂对象类,并将他们放入Spring容器中。
1 |
|
1 |
|
3.创建枚举类
创建枚举类,该枚举类中的一个最重要属性就是实例bean实现类的Class类对象,然后可以再任意创建其他属性,这些其他属性都可以用来作为工厂类中Map的key,使得工厂类可以根据key获得对应的实例bean实现类的Class类对象,然后再用applicationContext.getBean()方法来获取到实例bean。
1 | public enum OrderStatusEnum { |
4.创建工厂类
创建工厂类,使用Map类型的静态变量获取并保存所有的枚举对象,依赖注入Spring容器对象,该工厂可以根据输入参数找到对应的实例bean。
1 |
|
5.单元测试调用工厂实现功能
在测试包中创建单元测试类,注入工厂类并进行使用测试。
1 | import jingzhao.newFactory.test.factory.FailedStrategyFactory; |