關於設計模式六大原則

設計模式,老生常談,今天總結一下設計模式的六大原則,希望能結合過往的編程經驗,對他們有一個更加深刻的認識體會。

1、單一職責原則 (Single Responsibility Principle):一個類只負責一項職責,儘量做到類的只有一個行爲原因引起變化;

  a、業務對象(BO business object)、業務邏輯(BL business logic)拆分;

    分析:

我們在設計程序結構的時候,如果不注重這個原則,一個類、接口 裏面充滿了各種各樣的行爲,就會導致程序的冗餘,耦合度大增,極不利於拓展維護。

2、里氏替換原則(LSP liskov substitution principle):子類可以擴展父類的功能,但不能改變原有父類的功能;

      (目的:增強程序的健壯性)實際項目中,每個子類對應不同的業務含義,使父類作爲參數,傳遞不同的子類完成不同的業務邏輯。

    分析:

  • 子類必須實現父類的抽象方法,但不得重寫(覆蓋)父類的非抽象(已實現)方法。
  • 子類中可以增加自己特有的方法。
  • 當子類覆蓋或實現父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入參數更寬鬆。
  • 當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。

3、依賴倒置原則(dependence inversion principle):面向接口編程;(通過接口作爲參數實現應用場景) 

        抽象就是接口或者抽象類,細節就是實現類,思考一下:我們的代碼中是否真的注意了要去“抽象”,即定義抽象類和接口。

        分析:

    上層模塊不應該依賴下層模塊,兩者應依賴其抽象;

    抽象不應該依賴細節,細節應該依賴抽象;

             接口負責定義public屬性和方法,並且申明與其他對象依賴關係,抽象類負責公共構造部分的實現,實現類準確的實現業務邏輯

4、接口隔離(interface segregation principle):建立單一接口;(擴展爲類也是一種接口,一切皆接口)

         定義:

    a.客戶端不應該依賴它不需要的接口;

    b.類之間依賴關係應該建立在最小的接口上;

      分析:

              接口的設計粒度越小,系統越靈活,但是靈活的同時結構複雜性提高,開發難度也會變大,維護性降低

5.迪米特原則(law of demeter LOD):最少知道原則,儘量降低類與類之間的耦合;

         一個對象應該對其他對象有最少的瞭解

        分析:

          這個原則,其實很好理解,我們在一個類中要儘量減少對別的類或者對象的引用,這在我們實際的編程過程中,要尤爲注意,儘量降低類與類之間的耦合,使得我們的程序易於維護。

6、開閉原則(open closed principle):用抽象構建架構,用實現擴展原則;(總綱)

     Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

     軟件對象(類、模塊、方法等)應該對於擴展是開放的,對修改是關閉的。

     分析: 

         當軟件需要變化時,儘量通過擴展軟件實體的行爲來實現變化,而不是通過修改已有的代碼來實現變化。

 

總結:

單一職責原則告訴我們實現類要職責單一;里氏替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向接口編程;接口隔離原則告訴我們在設計接口的時候要精簡單一;迪米特法則告訴我們要降低耦合。而開閉原則是總綱,他告訴我們要對擴展開放,對修改關閉。 

       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章