官术网_书友最值得收藏!

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ǔ)充。

主站蜘蛛池模板: 慈利县| 青田县| 武宁县| 贵南县| 城步| 吉木萨尔县| 金坛市| 南平市| 天峨县| 海丰县| 宁乡县| 阳泉市| 仪陇县| 沁阳市| 徐州市| 霍州市| 卢龙县| 霸州市| 西安市| 丁青县| 汕头市| 襄汾县| 成都市| 满洲里市| 板桥市| 蚌埠市| 镇原县| 新源县| 佳木斯市| 崇左市| 吉木萨尔县| 岳西县| 井研县| 皮山县| 怀远县| 武穴市| 潮州市| 留坝县| 宝清县| 新泰市| 自贡市|