如果一個(gè)類A 的功能實(shí)現(xiàn)需要借助于類B,那么就稱類B是類A的依賴
class B {
各科成績
}
class A {
根據(jù)B里面的成績,計(jì)算總成績
}
如果在類A的內(nèi)部去實(shí)例化類B,那么兩者之間會出現(xiàn)較高的耦合,一旦類B出現(xiàn)了問題,類A也需要進(jìn)行改造,如果這樣的情況較多,每個(gè)類之間都有很多依賴,那么就會出現(xiàn)牽一發(fā)而動全身的情況,程序會極難維護(hù),并且很容易出現(xiàn)問題。要解決這個(gè)問題,就要把A類對B類的控制權(quán)抽離出來,交給一個(gè)第三方去做,把控制權(quán)反轉(zhuǎn)給第三方,就稱作控制反轉(zhuǎn)(IOC Inversion Of Control)。控制反轉(zhuǎn)是一種思想,是能夠解決問題的一種可能的結(jié)果,而依賴注入(Dependency Injection)就是其最典型的實(shí)現(xiàn)方法。由第三方(我們稱作IOC容器)來控制依賴,把他通過構(gòu)造函數(shù)、屬性或者工廠模式等方法,注入到類A內(nèi),這樣就極大程度的對類A和類B進(jìn)行了解耦。