IoC這個名字其實不夠合理

IoC,即Inversion of Control,中文也叫控制反轉,最常見於Spring中,但其實這個名字並不夠合理,控制轉移纔是一個貼切的名字。

首先看看什麼叫反轉,不論是英文的Inversion還是中文的”反轉“,意思都差不多:反轉,指轉向相反的方向。基本上應該屬於以下情況:以前向左現在向右;以前前進,現在後退;以前是牛市,現在是熊市;以前是被地主壓迫的農民工人,現在打倒地主資本家翻身做主人。

那麼我們再來看看控制反轉,指的是“以前是應用程序控制資源(對象、配置文件),現在是框架/IoC容器控制資源(對象、配置文件)“。仔細看看,應用程序和IoC容器其實沒有半毛錢的關係,所以他倆不存在”反轉“的可能性。事實上,二者之間的關係更像合作。可以看下面的比喻:

對象、配置文件相當於程序員,應用程序相當於軟件公司,IoC框架相當於外包公司。以前軟件公司自己招程序員,如果開發語言發生變化,不能隨意辭退重新招,這樣不夠靈活(相當於代碼寫死);而使用IoC框架以後,程序員全部成了外包人員,軟件公司要什麼,外包公司就給提供一個相應的程序員,如果開發語言發生變化,那麼軟件公司不需要開除員工重新招,找外包公司換一個即可(即使用配置文件,如果實現類變化,不需要修改代碼,只需修改配置文件爲新實現類即可)。程序員的社保等(被控制權)從軟件公司轉移到了外包公司。但不論什麼時候,真正幹活、創造價值的其實還是程序員。

綜上,控制(Control)從來沒有被反轉(Inversion),僅僅只是轉移(transition)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章