為什麼要用IOC

2021-10-12 15:47:33 字數 709 閱讀 3597

原本在**中建立物件的直接new出來就好了,而且這樣**也沒有問題呀,為什麼我們要使用spring的ioc進行控制反轉和依賴注入?

控制反**原本我們物件建立的控制權是由程式設計師自己決定的,現在我們某一介面具體實現類的選擇控制權從呼叫類中移除,轉交給第三方(spring)決定,寫在配置檔案中。

依賴注入:因為ioc確實不夠開門見山,因此業界曾進行了廣泛的討論,最終軟體界的泰斗級人物martin fowler提出了di(依賴注入:dependency injection)的概念用以代替ioc,即讓呼叫類對某一介面實現類的依賴關係由第三方(容器或協作類)注入,以移除呼叫類對某一介面實現類的依賴。

這樣的好處是什麼?

原本的**是直接使用new的方式建立物件,導致的問題就是物件之間的依賴關係十分嚴重,耦合度非常高而且依賴關係都寫死在了**裡,專案不易修改和維護,,一旦需要修改,就必須要改**,違背了我們對擴充套件開放,對修改關閉的原則。

但是使用spring中後就不一樣了,我們在**裡面只需要宣告我需要什麼樣的介面,由spring幫助我們進行依賴注入,那麼一旦我們需要更換實現類,那麼只需要修改spring的配置檔案即可,不需要修改**。

ioc的優點和缺點

ioc的優點

a、實現元件之間的解耦,提高程式的靈活性和可維護性。
ioc的缺點:

為什麼要用 enable shared from

樓主 hma if you think you can,you can.panrainbow 憂鬱淡藍 於 tue nov 9 11 48 38 2010 提到 引入enable shared from this的原因是可以實現返回值為指向該類本身的 shared ptr,為什麼以this為拷貝構造...

為什麼要用補碼

在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念.對於乙個數,計算機要使用一定的編碼方式進行儲存.原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式.原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 原 1000 ...

為什麼要用AndroidStudio

原因一 android studio是基於intellij idea開發的,所以android studio繼承了intellij idea的所有功能.原因二 android studio是谷歌開發的,專門用於android開發的編輯器,換句話說是親兒子,谷歌會把所有好吃的好用的先給親兒子.原因三 ...