開閉原則的定義
開閉原則的定義: 一個軟件實體,如類、模塊和函數應該對擴展開放,對修改關閉.即一個軟件實體應該通過擴展來實現變化,而不是通過修改已有的代碼來實現變化.
軟件實體包括一下部分
- 項目或軟件產品中按照一定的邏輯規則劃分的模塊
- 抽象和類
- 方法
注意: 開閉原則對擴展開放,對修改關閉,並不意味著不做任何修改,底層模塊的變更,必然要有高層模塊進行耦合,否則就是一個孤立無意義的代碼片段
開閉原則的好處
開閉原則是一個最基本的原則,另外五個原則都是開閉原則的具體形態,是指導設計的工具和方法,而開閉原則才是精神領袖.
- 開閉原則有利於進行單元測試
- 開閉原則可以提高複用性
- 開閉原則可以提高可維護性
- 面向對象開發的要求
開閉原則的使用
1.抽象約束
- 通過接口或抽象類約束擴展,對擴展進行邊界限定,不允許出現在接口或抽象類中不存在的public方法
- 參數類型、引用對象儘量使用接口或抽象類,而不是實現類
- 抽象層儘量保持穩定,一旦確定不允許修改接口或抽象類一旦定義,應立即執行,不能有修改接口的想法,除非是徹底的大返工
2.元數據控制模塊行為
元數據: 用來描述環境和數據的數據,通俗的說就是配置參數.
通過擴展一個子類,修改配置文件,完成了業務的變化,也是框架的好處
3.制定項目章程
4.封裝變化
對變化的封裝包含兩層含義:
- 將相同的變化封裝到一個接口或抽象類中
- 將不同的變化封裝到不同的接口或抽象類中
不能有兩個不同的變化出現在同一個接口或抽象類中.封裝變化,找出預計的變化或不穩定的點,為這些變化點創建穩定的接口,準確的講是封裝可能發生的變化.23個設計模式都是從各個不同的角度對變化進行封裝的.
- 開閉原則也只是一個原則,實現擁抱變化的方法很多,並不侷限於這6大設計原則,但是遵循著6大設計原則基本上可以應對大多數變化.
- 項目規章非常重要
- 預知變化,在實踐過程中,一旦發現有發生變化的可能,或者變化曾經發生過,就需要考慮現有的架構是否可以輕鬆的實現這一變化.
開閉原則是一個終極目標,任何人包括大師級人物都無法百分之百做到,但朝這個方向努力,可以非常顯著的改善一個系統的架構,真正做到"擁抱變化".
閱讀更多 學習編程 的文章