1.概述
對於物件導向軟體系統的設計而言,在支援可維護性的同時,提高系統的可複用性是一個至關重要的問題,如何同時提高一個軟體系統的可維護性和可複用性是物件導向設計需要解決的核心問題之一。
在物件導向設計中,可維護性的複用是以設計原則為基礎的。每一個原則都蘊含一些物件導向設計的思想,可以從不同的角度提升一個軟體結構的設計水平。
物件導向設計原則為支援可維護性複用而誕生,這些原則蘊含在很多設計模式中,它們是從許多設計方案中總結出的指導性原則。物件導向設計原則也是我們用於評價一個設計模式的使用效果的重要指標之一。
原則的目的: 高內聚,低耦合
2.物件導向設計原則
-
單一職責原則:類的職責單一,對外只提供一種功能,而引起類變化的原因都應該只有一個。
-
開閉原則:類的改動是透過增加程式碼進行的,而不是修改原始碼。
-
里氏代換原則:任何抽象類出現的地方都可以用他的實現類進行替換,實際就是虛擬機器制,語言級別實現物件導向功能。
-
依賴倒轉原則:依賴於抽象(介面),不要依賴具體的實現(類),也就是針對介面程式設計。
-
介面隔離原則:不應該強迫使用者的程式依賴他們不需要的介面方法。一個介面應該只提供一種對外功能,不應該把所有操作都封裝到一個介面中去。
-
合成複用原則:如果使用繼承,會導致父類的任何變換都可能影響到子類的行為。如果使用物件組合,就降低了這種依賴關係。對於繼承和組合,優先使用組合。
-
迪米特法則:一個物件應當對其他物件儘可能少的瞭解,從而降低各個物件之間的耦合,提高系統的可維護性。例如在一個程式中,各個模組之間相互呼叫時,通常會提供一個統一的介面來實現。這樣其他模組不需要了解另外一個模組的內部實現細節,這樣當一個模組內部的實現發生改變時,不會影響其他模組的使用。(黑盒原理)