今天看博客怎么减少if else 方法, 才发现spring 还有很多功能我没有用到,以后真的得花时间学学spring,今天学到的东西如下:
1.定义一个接口 store
public interface Store { void handle(); }
2.定义两个类
@Service("storeA") public class StoreA implements Store { @Override public void handle() { } @Override public String toString() { return "StoreA []"; } }
@Service("storeB") public class StoreB implements Store { @Override public void handle() { } @Override public String toString() { return "StoreB []"; } }
3.在factory类中的map类型直接注入即可
@Service public class StoreFactory { @Autowired @Qualifier("storeA") private StoreA storeA; @Autowired @Qualifier("storeB") private StoreB storeB; @Autowired private Map<String, Store> map = new HashMap<>();//直接对map注入 public void getStore() { System.out.println(storeA); System.out.println(storeB); System.out.println(map); } }
4.测试
@Test public void testStoreFactory() { storeFactory.getStore(); }
结果 为 :
StoreA []
StoreB []
{storeA=StoreA [], storeB=StoreB []}
5.总结
spring直接可以把同类型的类注入到map中,就可以不用定义工厂类根据需要来进行返回,直接通过map的get方法可以获取需要的类,可以说完美契合策略模式.