java反向注入_java 控制反转和依赖注入的理解
開始好好學習java基礎和思想~
控制反轉(IOC)是Spring框架的核心思想,用我自己的話說,就是你要做一件事,別自己可勁new了,你就說你要干啥,然后外包出去就好~
依賴注入(DI) 在我淺薄的想法中,就是通過接口的引用和構造方法的表達,將一些事情整好了反過來傳給需要用到的地方~
這樣做得好處:做到了單一職責,并且提高了復用性,解耦了之后,任你如何實現,使用接口的引用調用的方法,永遠不需要改變
舉一個栗子:
寫個接口,說咱們購物去~
public interfaceIShopping {voiddrive();
String Money();
}
在實現它兩下:有錢人購物,沒錢人購物 ? ? - -!這栗子舉的
public class RichMan implementsIShopping{
@Overridepublic voiddrive() {
System.out.println("Drive By Benz");
}
@OverridepublicString Money() {
System.out.println("lot`s of money");return "10000";
}
}
public class PoorGuy implementsIShopping{
@Overridepublic voiddrive() {
System.out.println("take a walk!");
}
@OverridepublicString Money() {
System.out.println("nothing");return "1";
}
}
然后我們出去玩,順便shopping一下吧~
public classPlay {privateIShopping shoppingSomething;
//使用構造方法,將實現傳入publicPlay(IShopping shoppingSomething){this.shoppingSomething =shoppingSomething;
}public voidwithgirlFriend(){
shoppingSomething.drive();
shoppingSomething.Money();
}
}
將想用的實現方式,用容器注入進來,這里就模擬下下怎么注入:
public classContainner {publicPlay getShopping(){return new Play(newRichMan());
}
}
測試一下:
public static voidmain(String[] args) {
Containner containner= newContainner();
Play play=containner.getShopping();
play.withgirlFriend();
}
結果是:
Drive By Benz
lot`s of money
如果再依賴注入的配置時,配置為窮人的實現,那我們的代碼都不用變,結果就會改變~ ? 嗯,應該理解了。
總結
以上是生活随笔為你收集整理的java反向注入_java 控制反转和依赖注入的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 引用队列_Java中的方法队列
- 下一篇: openfire java集群_优化op