什么是控制反轉(zhuǎn)呢,通俗點理解就是上層依賴下層的這種關(guān)系的扭轉(zhuǎn),讓下層去依賴上層。
把下層作為參數(shù)傳遞給上層的構(gòu)造函數(shù),實現(xiàn)上層對下層的“控制”,而不是依賴。
好處就是降低耦合,提升代碼的可維護性。
我們先來看一個上層依賴下層的例子。以設(shè)計一個行李箱為例。
底盤的尺寸依賴于輪子的大小,箱體的大小又依賴于底盤的大小。

若一開始輪子的尺寸是固定不變的。那代碼就是如下所示。

那么隨著功能迭代,現(xiàn)在有這樣一個需求,輪子的尺寸必須是動態(tài)可替換的,那因為這樣一種上層依賴下層的關(guān)系,輪子的設(shè)計一改變,那上層跟著都得改變,像這樣,輪子的size需要從上層依次傳遞給下層的輪子類,每一個類都需要修改。
假如說有一個時間很久的老項目就是采用了這種設(shè)計,依賴關(guān)系的類多達(dá)幾十甚至上百,一旦需要修改底層依賴,那我估計分分鐘你想跑路了,畢竟頭發(fā)重要。很難維護。

控制反轉(zhuǎn),化腐朽為神奇
那么我們接下來把依賴倒置,實現(xiàn)控制反轉(zhuǎn)。如圖:


那么此時,我們再來動態(tài)維護輪子的尺寸,需要做什么樣的修改呢,如圖,只需要修改輪子Tire類的設(shè)計即可
