回答

2

是的,IoC和Factory是兩回事。 IoC實際上是一個更通用的術語,許多事物都被認爲是IoC,所以它有助於進一步改進您所指的內容。例如,從技術上講,任何回調或事件都被認爲是IoC的實現。然而,大多數人在談論IoC時意味着依賴注入。

您可以使用Factory實現控制反轉,就像您可以使用依賴注入來實現它一樣。

你可能想到的是一個依賴注入容器,如Unity,Windows或Ninject。 DI容器是一種美化的抽象通用工廠,但它的功能遠不止於此,包括對象生命週期管理,條件綁定等...

將模式(IoC或DI)從(Factory,DI Container,Poor mans DI等),即使這些實現本身也可能是模式。

2

控制容器的反轉不主要用於依賴注入。這是讓容器控制對象的生命週期。因此inversion of control

這就是爲什麼你總是指定一輩子,當你在容器中註冊的事情(或者只使用默認壽命)

然而,由於容器爲您創建的對象,它也可以提供依賴注入作爲額外特徵。所以這真的是一個獎金。

另一方面,工廠模式應始終創建一個新的對象。工廠模式的目的僅僅是爲您創建正確的實施。

+1

「控制反轉」中的「控制」與對象的生命週期無關,請參閱http://en.wikipedia.org/wiki/Inversion_of_control – yegor256