設計模式之軟件設計七大原則

0x01.開閉原則

0x02.依賴倒置原則

0x03.單一職責原則

0x04.接口隔離原則

0x05.迪米特法則(最少知道原則)

  • 定義:一個對象應該對其餘對象保持最少的瞭解。又叫最少知道原則
  • 儘可能下降類與類之間的耦合
  • 下降類之間的耦合
  • 強調只和朋友交流,不和陌生人說話
  • 朋友:出如今成員變量,方法的輸入,輸出參數中的類稱爲成員朋友類,而出如今方法體內部的類不屬於朋友類。
  • 類與類之間的引用,儘可能只是直接關係的引用,避免沒必要要的耦合。
  • 樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/demeter

0x06.里氏替換原則

  • 定義:若是對每個類型爲T1的對象o1,都有類型爲T2的對象o2,使得以T1定義的全部程序P在全部的對象o1都替換成o2時,程序P的行爲沒有發生變化,那麼類型T2是類型T1的子類型。
  • 定義擴展:一個軟件實體若是適用一個父類的話,那必定適用於其子類,全部引用父類的地方必須能透明的使用其子類的對象,子類對象可以替換父類對象,而程序邏輯不變。
  • 引伸意義:子類能夠擴展父類的功能,但不能改變父類原有的功能。
  • 含義1:子類能夠實現父類的抽象方法,但不能覆蓋父類的非抽象方法
  • 含義2:子類中能夠增長本身特有的方法
  • 含義3:當子類的方法重載父類的方法時,方法的前置條件(即方法的輸入/入參)要比父類方法的輸入參數更寬鬆。
  • 含義4:當子類的方法實現父類的方法時(重寫/重載或實現抽象方法),方法的後置條件(即方法的輸出/返回值)要比父類更嚴格或相等。
  • 優勢1:約束繼承氾濫,開閉原則的一種體現。
  • 優勢2:增強程序的健壯性,同事變動時也能夠作到很是好的兼容性,提升程序的維護性、擴展性。下降需求變動時引入的風險。
  • 樣例代碼:https://github.com/sigmako/design-pattern/tree/master/design-principle/src/main/java/org/ko/design/principle/liskovsubstitution

0x07.合成/複用原則(組合/複用原則)

0x08.代碼工程

七大設計原則: https://github.com/sigmako/design-pattern/tree/master/design-principlegit

0x09.參考

相關文章
相關標籤/搜索