1. 程式人生 > >設計模式的幾個原則

設計模式的幾個原則

  1. 單一職責原則:
    a. 就一個類而言,應該僅有一個引起它變化的原因。
    b. 如果能夠想到多餘一個的動機去改變一個類,那麼這個類就具有多餘一個的職責,就應該考慮類的職責的分離。

  2. 開放—封閉原則:
    a. 開放拓展,封閉更改。
    b. 多拓展,少修改。
    c. 總會有無法預測的需求(不可能完全的封閉),所以,必須先猜測出最有可能發生變化的種類,然後構造抽象來隔離那些變化。
    d. 當發變化時要儘快建立抽象隔離變化,以免發生同類變化。
    e. 開放—封閉之後要做到——>面對需求(變化),對程式的改動是增加新的程式碼進行的,而不是修改原來的程式碼。(需要做到程式碼的拓展性比較好)
    f. 應僅對程式中出現頻繁變化的那些部分做出抽象,而不能可以抽象。

  3. 依賴倒轉原則:
    a. 高層模組不應該依賴低層模組,兩者都應該依賴抽象*(抽象類或介面)*。
    b. 針對介面程式設計,不要對實現程式設計。
    c. 強內聚,鬆耦合
    —比如訪問資料庫時,我們吧訪問資料庫的程式碼寫成函式,每次做新專案複用時只要調這些函式即可。

  4. 里氏轉換:
    a. 定義:子類必須能夠替換它們的父類,而程式沒有變化。–>這樣父類才能真正被複用,子類也能夠在父類基礎上拓展。(因為子類擁有父類所有非private的行為和屬性)
    b. 運用里氏代換原則時,儘量把父類設計為抽象類或者介面,讓子類繼承父類或實現父介面,並實現在父類中宣告的方法,我們可以很方便地擴充套件系統的功能,同時無須修改原有子類的程式碼,增加新的功能可以通過增加一個新的子類來實現。里氏代換原則是開閉原則的具體實現手段之一。

  5. 迪米特法則:
    a. 儘量減少兩個物件之間的直接互動,如果一個物件需要呼叫另一個物件的方法,可以通過第三者來轉發這個呼叫,即通過引入合理的第三者來降低現有物件的耦合。
    b. 在類的設計上,儘量降低類之間的耦合,避免修個某個類需要大動干戈。
    c. 在類的結構上,儘量減少類中的變數及函式的訪問許可權。
    d. 在類之間的引用上,儘量降低的出現一個物件對其他的引用。

  6. 合成複用原則:
    a. 在複用時,使用關聯關係(組合關係或聚合關係)來實現功能的複用,而儘量少使用繼承複用。