JAVA基礎-面向介面程式設計
阿新 • • 發佈:2021-06-25
面向過程程式設計
初學者程式設計時多半採用直接耦合的方式程式設計,即在類中直接new一個物件,或者將程式碼邏輯大段的寫在一個方法裡,有點兒類似於面向過程。
問題出現
這樣雖然可以滿足當下的需求,但是一旦需求變化,比如:
場景一:覆蓋
PD提了新的需求,這時需要增加一個新的邏輯替代原有邏輯,則需要手動覆蓋大段原始碼;
場景二:動態呼叫
需要是要動態呼叫不同的實現邏輯以滿足新需求,這時程式碼中可能會多出不少if else。
面向介面程式設計
場景一:覆蓋
當一個介面有多個實現類,需要通過name注入的方式指定某個實現類,否則報錯。name注入的方式:1.@AutoWired+@Qualifier("helloService") 2.@Resource(name="helloService")
場景二:動態呼叫
可以用map儲存該介面的所有實現類,map中的值初始化可以採用:
Map<String, TrafficMode> map = applicationContext.getBeansOfType(TrafficMode.class);
map可以放到某個factory的成員變數中,這時map中就裝有了所有實現類,呼叫時根據引數動態呼叫即可。
參考連結:https://www.imooc.com/article/17263