設計模式之六大原則

EamonHu發表於2020-11-04

設計模式是什麼

設計模式是一套理論,是軟體界的先輩們總結出的一套可以反覆使用的經驗。它可以提高程式碼的可重用性,增強系統的可維護性,以及解決一系列的複雜問題。

在學習設計模式之前,先要明白六大設計原則,設計模式是在六大設計原則上的實踐。

單一職責原則

  • 單一職責的定義是:應該有且僅有一個原因引起類的變更
  • 單一職責的好處:
    • 類的複雜度降低,實現什麼職責都有清晰明確的定義
    • 可讀性提高
    • 可維護性提高
    • 變更引起風險降低
  • 在寫程式碼的時候,儘量做到單一職責。但職責的劃分很難確認,要根據環境、專案、資源等而定,但還是儘量做到類的設計只有一個原因引起變化。

里氏替換原則

  • 裡式替換原則的定義:只要父類能出現的地方子類就可以出現,而且替代為子類也不會產生任何錯誤和異常,使用者可能根本不需要知道誰是父類誰是子類。但是,反過來就不行了,有子類出現的地方,父類未必能適應。
  • 裡式替換原則的目的就是增強程式的健壯性,版本升級時也可以保持非常好的相容性。即使增加子類,原有的子類還可以繼續執行。

依賴倒置原則

  • 依賴倒置的表現:
    1. 模組間的依賴通過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是通過介面或抽象類產生的。
    2. 介面或抽象類不依賴於實現類。
    3. 實現類依賴介面或抽象類。

更加精簡的定位是“面向介面程式設計”

  • 採用依賴倒置原則可以減少類間的耦合性,提高系統的穩定性,降低並行開發引起的風險,提高程式碼的可讀性和可維護性。
  • 依賴倒置原則的本質就是通過抽象使各個類或模組的實現彼此獨立,不互相影響,實現模組間的鬆耦合。核心就是“面向介面程式設計”

為什麼叫“倒置”,首先說“正置”是什麼意思,依賴正置就是類間的依賴是實實在在的實現類間的依賴,也就是面向實現程式設計,也是正常生活的思維,要開車就依賴車,要用電腦就依賴電腦,而編寫程式需要對現實世界的事物進行抽象,抽象的結果就是有了抽象類和介面,然後我們根據系統設計的需要產生了抽象間的依賴,代替了人們傳統思維中的事物間的依賴,“倒置”就是從這裡產生的。

介面隔離原則

  • 介面隔離原則的定義:
    • 客戶端不應該依賴它不需要的介面
    • 類間的依賴關係應該建立在最小的介面上

總結一句話是:建立單一介面,不要建立臃腫龐大的介面。再通俗點就是:介面儘量細化,同時介面的方法儘量少。

介面隔離原則和單一職責原則是相同的嗎?

是不同的。單一職責注重的是職責,要求職責單一,屬於業務邏輯上的劃分。介面隔離原則要求介面的方法儘量少,當二者發生衝突時,首先滿足單一職責原則。
  • 介面隔離原則也就是要做到高內聚。
  • 介面的設計粒度越小,系統越靈活,但是靈活的同時也帶來了結構的複雜化,開發難度增加,可維護性降低。需要深入瞭解業務邏輯,根據經驗和常識決定介面的粒度大小,太小增加開發工作量,太大靈活度降低。

迪米特法則

  • 迪米特法則:一個物件應該對其他複習有最少的瞭解。
  • 迪米特法則的核心觀念就是類間的解耦,弱耦合,類的複用率才可以提供。如果一個方法放在本壘中,既不增加類間關係,也不對本類產生負面影響,那就放置在本類中。

開閉原則

  • 開閉原則定義:軟體實體應該對擴充套件開放,對修改關閉。
  • 開閉原則的好處:
    • 可以減少測試的工作量
    • 可以提高複用性
    • 可以提高可維護性
    • 物件導向開發的要求

相關文章