DI其實是JAVA裏一個很基礎的概念,相信任何人都用過,在Spring裏,把它總結爲Dependency Injection,方便了程序構架的過程,並且實現low coupling。舉個簡單的例子說明,兩段代碼:
- //MyObj
- public class MyObj{
- public MyObj(){
- ...
- }
- public void doThings() {
- //process here
- }
- }
- // code 1
- public class Test1{
- ...
- public void doProcess() {
- MyObj mo = new MyObj();
- mo.doThings();
- }
- }
- // code 2
- public class Test2{
- MyObj mo;
- public void setMo(MyObj mo){
- this.mo = mo;
- }
- public void doProcess(){
- this.mo.doThings();
- }
- }
上面的例子,可以範縣最明顯的優缺點就是當MyObj這個類有所改變的時候,Test1必須也要改變,而Test2由於使用了DI,所以不論Myobj這個類如何變化,只要在需要調用Test2.doProcess()的地方注入已經定義好的MyObj就可以了。
總結一下,DI大大減少了程序的coupling,而且提高了程序的重複使用性,方便獨立的unit test,並且方便將來的程序改動。