大話設計模式之設計原則
阿新 • • 發佈:2019-01-06
在總結設計模式之前,我覺得有必要把程式設計中要遵循的幾個設計原則總結一下,因為在後面總結設計模式的時候,你會發現,基本上設計模式都是設計原則的體現和應用而已,有助於我們後期的總結學習。
單一職責原則
單一職責原則:就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
開放封閉原則
開放-封閉原則:軟體實體(類,模組,函式等等)應該可以擴充套件,但是不可修改。也就是說對於擴充套件是開放的,對於更改是封閉的。面對需求,對程式的改動是通過增加新程式碼進行的,而不是更改現有的程式碼,這就是開放-封閉原則的精神所在。
依賴倒轉原則
依賴倒轉原則:A.高層模組不應該依賴底層模組。兩個都應該依賴抽象。B.抽象不應該依賴細節。細節應該依賴抽象。無論是高層模組還是底層模組,都應該去依賴抽象,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是面向物件的設計。
里氏代換原則
里氏代換原則(LSP):子型別必須能夠替換掉他們的父型別。即一個軟體實體如果使用的是一個父類的話,那麼一定適用於其子類,而且它察覺不出父類物件和子類物件的區別。也正是有了這個原則,使得繼承複用成為了可能。這也是開放-封閉原則的基礎,正是由於子型別的可替換性才使得父類型別的模組在無需修改的情況下就可以擴充套件迪米特法則
迪米特法則:如果兩個類不必發生直接通訊,那麼兩個類就不應當發生直接的相互作用。如果其中一個類需要呼叫另一個類的某一個方法的話,可以通過第三者轉發這個呼叫。其根本思想就是強調了類之間的鬆耦合。類之間的耦合越弱,越有利於複用,一個處在弱耦合的類被修改,不會對有關係的類造成波及。也就是說資訊的隱藏有利於軟體的複用。合成/聚合複用原則
合成/聚合複用原則:儘量使用合成/聚合,儘量不要使用類繼承。合成和聚合都是關聯的特殊種類。聚合表示一種弱的‘擁有’關係,體現的是A物件可以包含B物件,但B物件不是A物件的一部分(就像大雁和雁群的關係);合成則是一種強的‘擁有’關係,體現了嚴格的部分與整體的關係,部分和整體的生命週期一樣(比如大雁和翅膀)。
好了程式設計的六大原則就先介紹到這裡,在後續總結設計模式的過程中,我們還會經常提到複習。