開放-封閉原則(The Open-Closed Principle) 是說軟體實體(類別、模組、函數等)應該可以擴展,但是不可以修改。 依賴倒轉原則 高層模組不應該依賴低層模組。兩個都應該依賴抽象。 抽象不應該依賴細節。細節應該依賴抽象。 Liskov替換原則 一個軟體實體如果使用的是一個父類別的話,那一定適用於其子類別,且它察覺不出父類別物件和子類別物件的區別。亦即,在軟體裡,把父類別都替換成它的子類別,程式的行為沒有變化。簡單說,子類型必須能替換調它們的父類型。 迪米特法則(Law of Demeter)(最少知識原則) 如果兩個類別不必彼此直接通信,那麼這兩個類別就不應當發生直接的相互作用。如果其中一個類別需要調用另一個類別的某一個方法的話,可透過第三者轉發這個調用。 合成/聚合複用原則 儘量使用合成/聚合,儘量不要使用類別繼承。 聚合表示一種弱的「擁有」關係,表現的是A物件可以包含B物件,但B物件不是A物件的一部分 合成則是一種強的「擁有」關係,表現了嚴格的部份和整體的關係,部份和整體的生命週期一樣 敏捷開發原則 不要為程式碼加上基於猜測的、實際不需要的功能。 如果不清楚一個系統是否需要命令模式,就不要急著去實現它。事實上,在需要的時候透過重構實現此模式並不困難,只有在真正需要如取消/恢復操作等功能時,把原來的程式碼重構為命令模式才有意義。