1. 程式人生 > >巧妙運用spring依賴注入實現簡單工廠模式

巧妙運用spring依賴注入實現簡單工廠模式

舉一個業務場景:

  假設有一個統一買票旅遊的入口,買完票會有一個欄位表明種類。

  這些種類表明你去哪,怎麼去。

  是坐飛機去奧地利,或是走路到隔壁龍蝦店,都不得而知,而且程式碼邏輯幾乎沒有關聯。這個時候我們難道要這樣寫程式碼嗎?

  if(type == 1){

        此處洋洋灑灑N多業務方法呼叫  

    }else(type == 2){

        此處洋洋灑灑N多業務方法呼叫  

    }  

我們可以用簡單工廠來做這事,而且spring的依賴注入非常智慧!

首先我們定義一個handler介面

public interface Handler {
    public void print
(); }

然後我們實現2個,並且加上spring的註解,注意手動給它們取名字哦。

@Component("aHandler")
public class AHandler implements Handler {
    @Override
public void print() {
        System.out.println("我是AHandler");
}
}
@Component("bHandler")
public class BHandler implements Handler {
    @Override
public void print() {
        System.out
.println("我是BHanler"); } }

我們再寫一個工廠去生產它們。

@Component
public class HandlerFactory {
    @Autowired
private Map<String , Handler> handlerMap;
    public Handler getHandlerByName(String name){
        return handlerMap.get(name);
}
}

好了,一切就緒,現在單元測試跑起來。

@RunWith(SpringRunner.class)
@SpringBootTest(classes 
= DemoApplication.class) public class DemoApplicationTests { @Autowired private HandlerFactory handlerFactory; @Test public void factoryTest() { handlerFactory.getHandlerByName("aHandler").print(); handlerFactory.getHandlerByName("bHandler").print(); } }

於是控制檯就列印相應bean下的方法啦~~~