今天看博客怎么减少if else 方法, 才发现spring 还有很多功能我没有用到,以后真的得花时间学学spring,今天学到的东西如下:
public interface Store { void handle(); }
@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 []";
}
}
@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); } }
@Test public void testStoreFactory() { storeFactory.getStore(); }
结果 为 :
StoreA []
StoreB []
{storeA=StoreA [], storeB=StoreB []}
spring直接可以把同类型的类注入到map中,就可以不用定义工厂类根据需要来进行返回,直接通过map的get方法可以获取需要的类,可以说完美契合策略模式.
原文:https://www.cnblogs.com/lishuaiqi/p/11104648.html