2.5依賴倒轉(zhuǎn)原則
內(nèi)容來自尚硅谷Java設(shè)計(jì)模式(圖解+框架源碼剖析)_嗶哩嗶哩_bilibili
寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會(huì)偶爾插入自己的注釋和理解,盡量會(huì)完成作業(yè)
我感覺還是有點(diǎn)繞的
2.5.1基本介紹
依賴倒轉(zhuǎn)原則(Dependence InversionPrinciple)是指:
1)????? 高層模塊不應(yīng)該依賴低層模塊,二者都應(yīng)該依賴其抽象
2)????? 抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象
3)????? 依賴倒轉(zhuǎn)(倒置)的中心思想是面向接口編程
4)????? 依賴倒轉(zhuǎn)原則是基于這樣的設(shè)計(jì)理念:相對(duì)于細(xì)節(jié)的多變性,抽象的東西要穩(wěn)定的多。以抽象為基礎(chǔ)搭建的架構(gòu)比以細(xì)節(jié)為基礎(chǔ)的架構(gòu)要穩(wěn)定的多。在java中,抽象指的是接口或抽象類,細(xì)節(jié)就是具體的實(shí)現(xiàn)類
5)????? 使用接口或抽象類的目的是制定好規(guī)范,而不涉及任何具體的操作,把展現(xiàn)細(xì)節(jié)的任務(wù)交給他們的實(shí)現(xiàn)類去完成
2.5.2應(yīng)用實(shí)例
請(qǐng)編程完成Person接收消息的功能。
1.????? 實(shí)現(xiàn)方案1+分析說明
2.????? 實(shí)現(xiàn)方案2(依賴倒轉(zhuǎn))+分析說明
2.5.3依賴關(guān)系傳遞的三種方式和應(yīng)用案例
接口傳遞
應(yīng)用案例代碼
?
?
構(gòu)造方法傳遞
應(yīng)用案例代碼
?
setter方式傳遞
應(yīng)用案例代碼
?
代碼演示
2.5.4依賴倒轉(zhuǎn)原則的注意事項(xiàng)和細(xì)節(jié)
1)????? 低層模塊盡量都要有抽象類或接口,或者兩者都有,程序穩(wěn)定性更好.
2)????? 變量的聲明類型盡量是抽象類或接口,這樣我們的變量引用和實(shí)際對(duì)象間,就存在一個(gè)緩沖層,利于程序擴(kuò)展和優(yōu)化
3)????? 繼承時(shí)遵循里氏替換原則
里氏替換原則在下一節(jié)