你不必嚴格遵守這些原則,違背它們也不會被處以宗教刑罰。但你應當把這些原則看成警鈴,若違背了其中的一條,那麼警鈴就會響起 。 ----- Arthur J.Riel
(1)所有數據都應該隱藏在所在的類的內部。
(2)類的使用者必須依賴類的共有接口,但類不能依賴它的使用者。
(3)盡量減少類的協議中的消息。
(4)實現所有類都理解的最基本公有接口[例如,拷貝操作(深拷貝和淺拷貝)、相等性判斷、正確輸出內容、從ASCII描述解析等等]。
(5)不要把實現細節(例如放置共用代碼的私有函數)放到類的公有接口中。
如果類的兩個方法有一段公共代碼,那麼就可以創建一個防止這些公共代碼的私有函數。
(6)不要以用戶無法使用或不感興趣的東西擾亂類的公有接口。
(7)類之間應該零耦合,或者只有導出耦合關系。也即,一個類要麼同另一個類毫無關系,要麼只使用另一個類的公有接口中的操作。
(8)類應該只表示一個關鍵抽象。
包中的所有類對於同一類性質的變化應該是共同封閉的。一個變化若對一個包影響,則將對包中的所有類產生影響,而對其他的包不 造成任何影響 .
(9)把相關的數據和行為集中放置。
設計者應當留意那些通過get之類操作從別的對象中獲取數據的對象。這種類型的行為暗示著這條經驗原則被違反了。
(10)把不相關的信息放在另一個類中(也即:互不溝通的行為)。
朝著穩定的方向進行依賴.
(11)確保你為之建模的抽象概念是類,而不只是對象扮演的角色。
(12)在水平方向上盡可能統一地分布系統功能,也即:按照設計,頂層類應當統一地共享工作。
(13)在你的系統中不要創建全能類/對象。對名字包含Driver、Manager、System、Susystem的類要特別多加小心。
規劃一個接口而不是實現一個接口。