軟件架構設計的七大原則


一、開閉原則(是面向對象開發中最基礎的原則,它指導建立更加穩定靈活的系統)

  開閉原則是對擴展和修改行為的一個原則,指的是軟件中的函數、類、模塊應該對擴展開放,對修改關閉。強調的是用抽象構建框架,用實現擴展細節。常用於解決的問題如:更新版本時,盡量在不修改源代碼,但增加新功能。

二、依賴倒置

  依賴倒置是指設計系統代碼結構時,高層模塊不依賴底層模塊,它們都應依賴於其抽象。細節應該依賴抽象。通過依賴倒置,可減少系統之間模塊的耦合性,提高系統的穩定性,提高系統的可讀性與可維護性,降低修改程序帶來的風險。

  ps:以抽象為基准設計的架構要比以細節為基准設計的架構穩定很多。所以在拿到需求時,要面向接口編程,先頂層再細節來設計代碼結構。

       依賴有依賴注入(最常用)、構造方法注入(單例不可用)、setter注入(單例多用)。

三、單一職責原則

  是指一個類只負責一個功能,不要存在多余一個導致類變更的原因。假設一個類負責兩個職責,修改一個可能會影響另一個功能發生故障。只負責一個類可降低類的復雜度,提高類的可讀性,提高系統的可維護性,降低變更引起的風險。

四、接口隔離原則

  是指用多個專門的接口,而不是使用單一的總接口,客戶端不應該依賴他不需要的接口。這個原則指導我們在設計接口時應注意以下幾點:

  1.一個類對一個類的依賴應該建立在最小的基礎上

  2.建立單一接口,不應建立臃腫的接口。

  3.細化接口功能,每個接口內方法要盡量少(不是越少越好,要適度)

  接口隔離原則符合我們所說的“高內聚,低耦合”的思想,從而使類具有很好的可維護性、可讀性、可擴展性。我們在設計接口時,要多花時間去思考業務模型,包括以后可能要修改的還要去做一些預判。所以,對於抽象,對業務模型的理解是最重要的。

五、迪米特法則

   是指一個對象應該保持對其他對象最少的了解,也叫最少了解法則,盡量降低類與類之間的耦合。它強調之和朋友交流,不和陌生人說話。如類中的成員變量、函數參數、函數返回值都是朋友,函數內部的對象是陌生人。

六、里氏替換原則

  里氏替換原則可以理解為一個軟件實體如果能適用父類的話,一定也能適用子類。所有能引用父類的地方都能透明的使用子類對象。子類可替換父類對象而使程序邏輯不變。引申為:子類可擴展父類的方法,但不能覆蓋父類原有的功能。

  總結為:1.子類可以實現父類的抽象方法,但不能父類的非抽象方法。

      2.子類可增加自己特有的方法。

      3.當子類的方法重載父類的方法時,子類的前置參數(入參)相比父類更寬松。

      4.當子類的方法重載父類的方法時,子類的后置參數(函數返回值)相比父類更嚴格或相等。

七、合成復用原則

  指盡量使用對象組合、聚合,而不是繼承來實現軟件復用的目的。這樣可以使類更加靈活、降低類與類之間的耦合度。

  繼承叫白箱復用,會將父類的實現細節全部暴露給子類。合成復用叫黑箱復用,對類以外是無法獲取到實現細節的。

總結:

  我們在寫代碼時,要根據實際情況(人力、時間、成本)綜合考慮,不需刻意追求完美,要在適當的場景考慮設計原則,體現的是一種平衡取舍,來幫助我們設計出更優雅的代碼結構。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM