真正理解控制反轉(zhuǎn)

什么是控制反轉(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è)計即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容