- 高層模塊不應(yīng)該依賴低層模塊汉嗽,兩個(gè)都應(yīng)該依賴抽象
- 抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象
其實(shí)就是針對(duì)接口編程找蜜,不要對(duì)實(shí)現(xiàn)編程饼暑。
里氏替換原則:子類型必須能夠替換掉它們的父類型
一個(gè)軟件實(shí)體如果使用的是一個(gè)父類的話,那么一定適用其子類,而且它察覺不出父類對(duì)象和子類對(duì)象的區(qū)別撵孤,也就是說在程序中將父類全部替換成它的子類迈着,程序的行為沒有變化竭望。只有當(dāng)子類可以替換掉父類邪码,軟件單位的功能不受影響時(shí),父類才能真正得以復(fù)用咬清,而子類也能夠在父類的基礎(chǔ)上增加新的行為闭专。
在寫代碼時(shí),為了使得常用代碼可以復(fù)用旧烧,一般都會(huì)把這些常用代碼寫成許許多多函數(shù)的程序庫影钉,這樣在新功能中只需要去調(diào)用這些低層的函數(shù)就可以了。但這樣高層模塊都是和低層模塊是耦合的掘剪,沒法復(fù)用這些高層模塊平委。而如果不管是高層模塊還是低層模塊都依賴于抽象/接口,只要接口是穩(wěn)定的夺谁,那么任何更改都不用擔(dān)心其它受到影響(里氏替換原則)廉赔。