設計模式基本原則

       首先要推薦一下《設計模式之禪》這本書,對於作爲初級碼農的我來說,我覺得這本書讓人獲益匪潛,語言詼諧幽默,例子形象生動,深入淺出的講解了設計模式的基本概念和最佳實踐。剛讀完了本書的前兩部分,基本原則和23種設計模式。後面兩部分是對於這些設計模式的比較。自認爲還沒有領會各種設計模式的精髓,不敢輕易比較,所以在這裏先理出個思路,再行深入。

      六大設計原則分別是:單一職責原則,里氏替換原則,依賴倒置原則,接口隔離原則,迪米特法則,開閉原則。  

      1.單一職責原則(SRP)

        There should never be more than one reason for a class to change.

        在實踐中很難真的做到職責單一,但是需要儘量讓接口和類相互之間的耦合降低,降低變動帶來的風險。

       2.里氏替換原則(LSP)

         If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T.

         針對繼承所帶來的耦合性增強問題,使用里氏替換原則增強程序的健壯性,版本升級時也可以保持非常好的兼容性。

       3.依賴倒置原則(DIP)

         High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

         模塊間的依賴通過抽象發生。所有可能存在變更的地方,都通過抽象類實現,高層模塊不需要對底層模塊有任何瞭解,降低耦合性。TDD 開發模式是依賴倒置原則的最高級應用。

        依賴關係的三種傳遞方式:構造函數傳遞,setter 方法傳遞,接口聲明依賴對象。其中,接口聲明的方式其實就是平常用到的在函數調用時傳遞依賴對象。

       4.接口隔離原則

        Clients should not be forced to depend upon interfaces that they don't use.

        在根據接口隔離原則拆分接口時,首先必須滿足單一職責原則,在業務邏輯上做到最小業務單位。

       5.迪米特法則

       也稱最少知識原則,一個對象應該對其他對象有最少的瞭解。核心觀念是類間解耦,弱耦合。

      6.開閉原則

       Software entities like classes, modules and functions should be open for extension but closed for modifications.

      核心在於擁抱變化,在設計層面上對可能存在的變化留出空間,業務邏輯的增加和修改通過擴展而不是對現有類的修改來實現。提高系統的穩定性。開閉原則是所有設計原則的精神領袖。

      碼了這麼多字發現都是些基本的概念知識,時常回顧一下這些基本原則也是大有裨益的。這些其實更多是在一個抽象層面知道編碼工作,可以說是程序員的編碼哲學。我們總是需要一些基本的指導原則來引導我們的各種行爲,在coding 上,六大設計原則應該成爲我們的行爲指南。

發佈了22 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章