- 貫穿設(shè)計模式:用一個電商項目詳解設(shè)計模式
- 偉山育琪
- 628字
- 2024-12-28 11:44:55
1.2.4 依賴倒置原則
依賴倒置原則(Dependence Inversion Principle,DIP),指的是程序要依賴于抽象接口,不要依賴于具體實現(xiàn)。簡單地說就是要求對抽象進(jìn)行編程,不要對實現(xiàn)進(jìn)行編程。更簡單的解釋,就是“面向接口編程”。
面向接口編程,相信大家都比較熟悉這個概念,也理解其中的意義。繼續(xù)以1.2.3小節(jié)的Spring源碼示例進(jìn)行說明,我們可以看到容器類GenericApplicationContext和Bean工廠核心類DefaultListableBeanFactory都實現(xiàn)了父類BeanDefinitionRegistry中的registerBeanDefinition方法。父類BeanDefinitionRegistry就是接口,我們要面向接口編程,就是要面向BeanDefinitionRegistry編程。那么Spring源碼中哪里能體現(xiàn)出面向BeanDefinitionRegistry編程呢?帶著這個疑惑,我們看看,是誰調(diào)用了registerBeanDefinition方法,以及是如何調(diào)用的,代碼如下:

請看以上代碼為大家提供的注釋,我們可以看到registry的類型是BeanDefinitionRegistry接口,而不是具體的容器子類GenericApplicationContext和Bean工廠子類DefaultListableBeanFactory。面向接口BeanDefinitionRegistry進(jìn)行方法的調(diào)用,就是面向BeanDefinitionRegistry編程,即面向接口編程。
關(guān)于依賴倒置原則,也有一些其他觀點的補(bǔ)充,如高層模塊不應(yīng)該依賴低層模塊,都應(yīng)該依賴它們的抽象、細(xì)節(jié)依賴抽象等,其實都是對“面向接口編程”的另外一種表達(dá)方式,這里就不再過多地說明。
筆者總結(jié)了這樣一句話供大家玩味,或許有助于大家對以上四個原則的認(rèn)識和理解:“單一職責(zé)原則以職責(zé)為基準(zhǔn)劃分類和接口;劃分出來的接口需要最小化,剔除無用接口方法,在接口隔離原則下進(jìn)行精確的使用;子類對父類的實現(xiàn)需要依據(jù)里氏替換原則,在實現(xiàn)所有抽象方法的前提下,可以增加個性化功能,至此子類和父類就創(chuàng)建完成了;當(dāng)我們使用該類時,要面向接口編程,遵循依賴倒置原則。”讓我們繼續(xù)對剩余的原則進(jìn)行說明,然后在1.2.6小節(jié)對這句話進(jìn)行最后的補(bǔ)充。
- 4D打印:改變未來商業(yè)生態(tài)
- 抖音賬號運營實踐
- 創(chuàng)造高估值:打造價值型互聯(lián)網(wǎng)商業(yè)模式
- 零售新科學(xué)
- 電子商務(wù)概論(第3版)
- 公眾號運營實戰(zhàn)手冊:57招讓你實現(xiàn)從0到10萬+
- 淘寶網(wǎng)店頁面設(shè)計、布局、配色、裝修一本就夠(最新實戰(zhàn)版)
- APP營銷實戰(zhàn):搶占移動互聯(lián)網(wǎng)第一入口(第2卷)
- 短視頻+直播:內(nèi)容創(chuàng)作、營銷推廣與流量變現(xiàn)
- 銷售鐵軍:從銷售新人到鐵軍締造者
- O2O+精細(xì)化管理
- 社群經(jīng)濟(jì)+社區(qū)O2O:重構(gòu)商業(yè)模式與營銷實戰(zhàn)
- 電商財務(wù)管理系統(tǒng):模塊架構(gòu)+數(shù)據(jù)流轉(zhuǎn)+進(jìn)銷存核算+中臺建設(shè)
- 從零開始做自媒體(套裝共7冊)
- 微信運營全攻略:流程+推廣+營銷+管理+案例