唯一不變的是不斷的變化,在軟體開發中應該對需求的變化持開放態度,我們要做的就是如何將這種變化對我們現有的成果帶來最小的衝擊。開閉原則直接面對物件導向程式的目標擴充套件性和可維護性,要求對擴充套件開放,對修改關閉;即在不修改原有**的情況下改變模組的行為。該原則是物件導向程式設計的總原則,也是度量程式設計的好與壞的唯一標準
開閉原則的實現策略主要在物件導向的封裝性和多型性的基礎上,利用物件導向的其他原則完成的。
1.使用多型機制解決問題。
如:遠端監控系統使用資料傳輸使用427版本的協議,一年以後對427版本的協議進行了修正。設計時應該考慮的資料傳輸協議的可變性,抽象出具有報文解譯、編制、校驗等所有版本協議使用的通用方法,呼叫方針對介面進行程式設計即可,如上述示例設計類圖如下:
呼叫方依賴於報文介面,報文介面是穩定的,而不針對具體的427協議或427修正協議。利用介面多型技術,實現了開閉原則。除使用介面實現多型外,還可以使用繼承機制重置實現多型來完成,如:某一實現過程包括獲取資料、資料處理、資料儲存,其中獲取資料和訪問資料不變,資料處理過程發生變化,則可以在子類中使用重置機制將資料處理方法進行重寫。使用多型技術實現的方式,均不修改原有**,只是增加乙份新的實現類,完成了開閉原則。
2.降低耦合度, 將變化的**降到最低
如:系統介面上按鈕控制項為方形按鈕,現在領導要求把所有的按鈕換成圓角按鈕,如何辦?
使用迪公尺特法則,在使用按鈕控制項時,給其包外圍一層,增加乙個按鈕包裝類,使得介面與按鈕控制項脫耦,修改時只需修改包裝器類即可。其類圖如下:
3. 遵循單一職責原則,職責越單一,封裝性越好,「開閉原則」越容易實現。
1.注意分支語句的使用。分支語句破壞開閉原則,當條件發生變化時,我們不得不修改**。解決辦法依然是使用多型機制,每個分支使用不同實現類,來解決問題。
2.避免過度設計
百分之百的開閉原則很難達到,但要盡量符合開閉原則。在設計時對於將來可能會發生變化的部分實現面向介面的程式設計,同時對不可能或極小概率發生變化時的應該避免過度設計而造成的複雜性。
物件導向設計原則 開閉原則
在軟體開發中,為了提高軟體系統的可維護性和可復用性,增加軟體的可擴充套件性和靈活性,程式設計師要盡量根據 7條原則來開發程式,從而提高軟體開發效率 節約軟體開發成本和維護成本。我們將在下面的幾節中依次來介紹這 7 條原則,本節首先介紹開閉原則。開閉原則 open closed principle,o...
物件導向設計原則 開閉原則
軟體實體應當對擴充套件開放,對修改關閉 這裡的軟體實體包括以下幾個部分 專案中劃分出的模組 類與介面方法 開閉原則的含義是 當應用的需求改變時,在不修改軟體實體的源 或者二進位制 的前提下,可以擴充套件模組的功能,使其滿足新的需求。具體來說就是你應該通過擴充套件來實現變化,而不是通過修改原有的 來實...
4 開閉原則 物件導向設計原則
在軟體開發中,為了提高軟體系統的可維護性和可復用性,增加軟體的可擴充套件性和靈活性,程式設計師要盡量根據 7 條原則來開發程式,從而提高軟體開發效率 節約軟體開發成本和維護成本。我們將在下面的幾節中依次來介紹這 7 條原則,本節首先介紹開閉原則。開閉原則 open closed principle,...