1:單一職責原則
就乙個類而言,應該僅有乙個引起它變化的原則。如果乙個類承擔的職責過多,就等於把這些耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其它職責能力,這種耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。
如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責。
2:開放--封閉原則
軟體實體可以擴充套件,但是不可以修改,即對於擴充套件是開放的,對於修改是封閉的。而對需求,對程式的改動是通過增加**來完成,而不是改動現有的**。
當變化發生時,我們就建立抽象來隔離以後發生同類的變化。開放---封閉原則是物件導向的核心所在,應該對程式中呈現出頻繁變化的那部分做出抽象,拒絕對任何都刻意抽象及不成熟的抽象。
3:黎克特制代換原則
乙個軟體實體如果使用的是乙個父類的話,那麼一定使用其子類,而且它察覺不出父類物件和子類物件的區別,也就是說,在軟體裡,把父類替換成子類,程式的行為沒有變化。子類必須能夠替換掉他們的父型別。
4:依賴倒轉原則
抽象不應該依賴細節,細節應該依賴抽象。即針對介面程式設計,不要對實現程式設計,高層模組不能依賴底層模組,兩者都應該依賴抽象。依賴倒轉原則是物件導向的標誌,用哪種語言編寫程式不重要,如果編寫時考慮如何針對抽象程式設計,而不是針對細節程式設計,即對程式的所有依賴關係都終止於抽象類或結構。那就是物件導向設計,反之就時過程化設計。
5:介面隔離原則
介面隔離原則(inte***ce segregation principle, isp):使用多個專門的介面,而不使用單一的總介面,即客戶端不應該依賴那些它不需要的介面。
介面僅僅提供客戶端需要的行為,客戶端不需要的行為則隱藏起來,應當為客戶端提供盡可能小的單獨的介面,而不要提供大的總介面
。在物件導向程式設計語言中,實現乙個介面就需要實現該介面中定義的所有方法,因此大的總介面使用起來不一定很方便,為了使介面的職責單一,需要將大介面中的方法根據其職責不同分別放在不同的小介面中,以確保每個介面使用起來都較為方便,並都承擔某一單一角色。介面應該盡量細化,同時介面中的方法應該盡量少,每個介面中只包含乙個客戶端(如子模組或業務邏輯類)所需的方法即可,這種機制也稱為
「定**務」,即為不同的客戶端提供寬窄不同的介面。
6:迪公尺特法則
如果兩個類不直接通訊,那麼這兩個類就不應該發生直接的相互作用。如果乙個類需要呼叫另乙個類的某個方法的話,可以通過第三個類**這個問題。在類的結構設計,每乙個類都應該盡量降低成員的訪問許可權。該法則在介面卡模式,解釋模式等有強烈體現。
設計模式 設計模式原則
1 單一職責原則 srp 乙個類應當只有乙個引起其變化的原因。使用單一職責原則的好處有 1 類的複雜性降低 2 可讀性提高 3 可維護性提高 4 變更引起的風險降低 2 黎克特制替換原則 lsp 在使用父類的地方,可以使用其子類替換。黎克特制替換原則的含義 1 子類必須完全實現父類的方法 2 子類可...
設計模式 設計原則
1.單一職責原則 single responsibility principle,簡稱srp 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到...
設計模式 設計原則
description 這是本人學習 設計模式之禪 的筆記 設計原則 一 單一職責 應該有且僅有乙個原因讓乙個類發生變更。這個原則目的是要讓介面的職責分明,結構清晰。優點 類的複雜度降低,可讀性提高,變更風險低,可維護性提高。二 黎克特制替換 通俗一點就是父類存在的地方,可以替換為子類,而程式的行為...