開發人員的五個信條:
讓代碼更靈活,讓軟件更健壯,讓開發更快樂...
1. 單一職責原則
-
此意何解
就一個類而言,應該僅有一個引起它變化的原因。
-
知識點
- 如果一個類承擔的職責過多,就等於把這些指責偶合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
- 軟件設計真正要做的許多內容,就是發現職責並把那些職責相互分離。
2. 迪米特法則
-
此意何解
如果兩個類不必彼此直接通信,那么這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。
-
知識點
- 最少知識原則。
- 在類的結構設計上,每一個類都應當盡量降低成員的訪問權限。
- 迪米特法則的根本思想是,強調類之間的松耦合。類之間的耦合越弱,越有利於復用,一個處在弱耦合的類被修改,不會對有關系的類造成波及。
3. 開發-封閉原則
-
此意何解
對於擴展是開放的,對於修改是封閉的。
-
知識點
- 開發-封閉原則是面向對象設計的核心。可維護、可復用、可擴展、靈活性好
- 面對需求,對程序的改動是通過增加新代碼進行的,而不是更改現有的代碼。
- 開發人員應該僅對程序中呈現出頻繁變化的那些部分做出抽象,然而,對於應用程序中的每一個部分都刻意的進行抽象同樣不是一個好主意。拒接不成熟的抽象和抽象本身一樣重要!
4. 依賴倒轉原則
-
此意何解
- 高層模塊不應該依賴低層模塊。兩個都應該依賴抽象。
- 抽象不應該依賴細節。細節應該依賴抽象。
-
知識點
- 依賴倒轉是面向對象設計的標志
- 針對接口編程,不要對現實編程。
- 程序中所有的依賴關系都是終止於抽象類或者接口,那就是面向對象的設計,反之就是過程化設計。
5. 里式替換原則
-
此意何解
子類型必須能夠替換掉它們的父類型。(一個軟件實體如果使用的是一個父類的話,那么一定適用於其子類,而其它察覺不出父對象和子對象的區別。也就是說,在軟件里面,把父類都替換成它的子類,程序的行為沒有變化)
-
知識點
- 只有當子類可以替換掉父類,軟件單位的功能不受到影響時,父類才能真正的被復用,而子類也能夠在父類的基礎上增加新的行為。
- 由於子類型的可替換性才能使得父類型的模塊在無需修改的情況下就可以擴展。