開閉原則
1.一個軟件實體應該對擴展開放,對修改關閉
- 設計的時候應當使這個模塊可以在不被修改的前提下被擴展。
- 對面向對象來說是,不允許修改系統的抽象層,而允許擴展的是系統的實現層。
- 就是不修改規則只修改實現
2.解決問題的關鍵在與抽象化
- 需要給系統定義一個一勞永逸,不再修改的抽象設計
- 允許無窮無盡的行爲在實現層被實現
3.對可變性的封裝原則
- 找一個系統的可變因素將其封裝起來
- 一種可變性不應散落在代碼的很多角落
- 一種可變性不應與另一種可變性混合在一起
里氏代換原則
- 任何基類可以出現的地方子類一定可以出現
依賴倒轉原則
- 要依賴於抽象不能依賴於實現
組合/聚合複用原則
- 儘量使用合成/聚合而不是使用繼承關係達到複用的目的
- 該原則就是在一個新的對象裏面使用一些已有的對象,使之成爲新對象的一部分:新的對象通過向這些對象的委派達到複用已有功能的目的。
迪米特法則
- 一個軟件實體應當與儘可能少的其它實體發生相互作用
接口隔離原則
- 應當爲客戶端提供儘可能的單獨接口,而不要提供大的總接口