依賴倒轉原則
解釋
抽象不應該依賴細節,細節應該依賴於抽象。
即,針對介面程式設計,不要對實現程式設計。
實現
高層模組不應該依賴低層模組。兩個都應該依賴抽象。
抽象不應該依賴細節。細節應該依賴抽象。
價值
依賴倒轉是物件導向設計的標誌。
如果編寫程式時考慮的都是如何針對抽象程式設計而不是針對細節程式設計。即,程式中所有的依戀關係都是終止於抽象類或者介面,那就是物件導向的設計,反之那就是過程化的設計。
體現
誰也不依靠誰,除了約定的介面,大家都可以靈活自如。
解決的問題
各個功能相互依賴,難以維護。問題的查詢、修改很複雜。
面向過程的開發時,為了使得常用**可以復用,一般都會把這些常用**寫成許許多多的程式庫,這樣我們再做新專案時,去呼叫這些低層的函式就可以了。(訪問資料庫的**,高層模組依賴低層模組)。這樣會的問題?
高層模組依賴低層模組。如果需要高層模組不變,更改呼叫別的低層模組就很難,因為高層模組都是與低層的繫結在一起的。
所以,不管高層模組還是低層模組,都應該依賴於抽象。
具體做法:提供介面或抽象類。只要介面是穩定的,那麼任何乙個的更改都不用擔心其他收到影響。這就使得無論高層模組還是低層模組都可以很容易地被復用。
黎克特制代換原則
解釋
乙個軟體實體如果使用的是乙個父類的話,那麼一定適用於其子類,而且它察覺不吃父類物件和子類物件的區別。
即,子型別必須能夠替換掉它們的父型別。子類擁有父類所有非private的行為和屬性。
優點
可以繼承復用。只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。
正是由於子型別的可替換性才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。(有了黎克特制代換原則,才使得開放-封閉成為了可能)。
物件導向四大好處
可維護、可擴充套件、可復用、靈活性好。
類、程式集
強內聚、松耦合。即,易替換
介面最大好處
內部複雜的邏輯不需要讓外部了解,只需預留出相應的功能方法即可
單一職責原則
各自的職責明確
開放-封閉原則
對修改封閉,對擴充套件開放。軟體系統設計得好,就可以無限擴充套件。
設計模式原則 依賴倒轉 黎克特制代換原則
設計模式一共有六大原則 單一原則 開放封閉原則 介面分離原則 黎克特制替換原則 最少知識原則 依賴倒置原則。依賴倒轉原則 高層模組不應該依賴於低層模組,兩者都應該依賴於抽象。抽象不應該依賴細節,細節應該依賴抽象。在物件導向程式設計領域中,依賴反轉原則 dependency inversion pri...
黎克特制代換和依賴倒轉原則 二
上節說到開閉原則的關鍵是抽象化,有了抽象化就要有具體化,從抽象化到具體化的過程,其實也是乙個繼承關係確立的過程。無論是 實現繼承 還是 介面繼承 在這個過程中,我們都要以黎克特制代換原則為指導 任何基類可以出現的地方,子類一定可以出現。依賴倒轉原則也有關於抽象和具體的描述 要依賴於抽象,不要依賴於具...
《讀書筆記》設計模式 依賴倒轉原則 黎克特制代換原則
依賴倒轉原則 高層模組不應該依賴低層模組,兩個都應該依賴抽象。抽象不應該依賴細節,細節應該依賴抽象。兩點都說明了同乙個問題,就是 程式中的依賴關係都應該終止於抽象類或者介面,而不能終止於實現細節的具體類。高層模組與低層模組之間插入乙個抽象類或者介面,讓兩個模組同時依賴於抽象,這樣就實現了高層模組和低...