6大設計原則之開閉原則

開閉原則的定義

開閉原則的定義: 一個軟件實體,如類、模塊和函數應該對擴展開放,對修改關閉.即一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化.

軟件實體包括一下部分

  1. 項目或軟件產品中按照一定的邏輯規則劃分的模塊
  2. 抽象和類
  3. 方法

注意: 開閉原則對擴展開放,對修改關閉,並不意味著不做任何修改,底層模塊的變更,必然要有高層模塊進行耦合,否則就是一個孤立無意義的代碼片段

開閉原則的好處

開閉原則是一個最基本的原則,另外五個原則都是開閉原則的具體形態,是指導設計的工具和方法,而開閉原則才是精神領袖.

  1. 開閉原則有利於進行單元測試
  2. 開閉原則可以提高複用性
  3. 開閉原則可以提高可維護性
  4. 面向對象開發的要求

開閉原則的使用

1.抽象約束

  1. 通過接口或抽象類約束擴展,對擴展進行邊界限定,不允許出現在接口或抽象類中不存在的public方法
  2. 參數類型、引用對象儘量使用接口或抽象類,而不是實現類
  3. 抽象層儘量保持穩定,一旦確定不允許修改接口或抽象類一旦定義,應立即執行,不能有修改接口的想法,除非是徹底的大返工

2.元數據控制模塊行為

元數據: 用來描述環境和數據的數據,通俗的說就是配置參數.

通過擴展一個子類,修改配置文件,完成了業務的變化,也是框架的好處

3.制定項目章程

4.封裝變化

對變化的封裝包含兩層含義:

  1. 將相同的變化封裝到一個接口或抽象類中
  2. 將不同的變化封裝到不同的接口或抽象類中

不能有兩個不同的變化出現在同一個接口或抽象類中.封裝變化,找出預計的變化或不穩定的點,為這些變化點創建穩定的接口,準確的講是封裝可能發生的變化.23個設計模式都是從各個不同的角度對變化進行封裝的.


  1. 開閉原則也只是一個原則,實現擁抱變化的方法很多,並不侷限於這6大設計原則,但是遵循著6大設計原則基本上可以應對大多數變化.
  2. 項目規章非常重要
  3. 預知變化,在實踐過程中,一旦發現有發生變化的可能,或者變化曾經發生過,就需要考慮現有的架構是否可以輕鬆的實現這一變化.

開閉原則是一個終極目標,任何人包括大師級人物都無法百分之百做到,但朝這個方向努力,可以非常顯著的改善一個系統的架構,真正做到"擁抱變化".


分享到:


相關文章: