前言
一個穩定的系統設計,肯定要遵守好的設計原則。在OO design當中,正有這樣的 solid
(堅固的)設計原則。他們分別是:
- S : Single Responsibility Principle
- O : Open Closed Principle
- L : Liskov Substitution Principle
- L : Law of Demeter
- I : Interface Segregation Principle
- D : Dependence Inversion Principle
開閉原則
定義
Software entities like classes,modules and functions should be open for extension but closed for modifications.
一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。
What
什麼是軟件實體?
- 項目或軟件產品中按照一定的邏輯規則劃分的模塊。
- 抽象和類。
- 方法。
Why
爲什麼需要擴展?
一個軟件產品只要在生命期內,都會發生變化,既然變化是一個既定的事實,我們就應該在設計時儘量適應這些變化,以提高項目的穩定性和靈活性,真正實現“擁抱變化”。
爲什麼要採用開閉原則?
開閉原則是最基礎的一個原則,是面向對象設計原則的精神領袖
,其他的原則可以說是他的具體實現。
- 提高複用性
- 提高可維護性
- 不影響已有的測試單元
- 面向對象設計的需要
How
如何使用開閉原則?
- 抽象約束
- 元數據(metadata)控制模塊行爲
- 制定項目章程
- 封裝變化
變化的種類:
- 邏輯變化
- 子模塊變化
- 可見視圖變化