開閉原則(open closed principle,ocp)由勃蘭特·梅耶(bertrand meyer)提出,他在 1988 年的著作《物件導向軟體構造》(object oriented software construction)中提出:軟體實體應當對擴充套件開放,對修改關閉(software entities should be open for extension,but closed for modification),這就是開閉原則的經典定義。
這裡的軟體實體包括以下幾個部分:
專案中劃分出的模組
類與介面方法
開閉原則的含義是:當應用的需求改變時,在不修改軟體實體的源**或者二進位制**的前提下,可以擴充套件模組的功能,使其滿足新的需求。
開閉原則是物件導向程式設計的終極目標,它使軟體實體擁有一定的適應性和靈活性的同時具備穩定性和延續性。具體來說,其作用如下。
1. 對軟體測試的影響
軟體遵守開閉原則的話,軟體測試時只需要對擴充套件的**進行測試就可以了,因為原有的測試**仍然能夠正常執行。
2. 可以提高**的可復用性
粒度越小,被復用的可能性就越大;在物件導向的程式設計中,根據原子和抽象程式設計可以提高**的可復用性。
3. 可以提高軟體的可維護性
遵守開閉原則的軟體,其穩定性高和延續性強,從而易於擴充套件和維護。
可以通過「抽象約束、封裝變化」來實現開閉原則,即通過介面或者抽象類為軟體實體定義乙個相對穩定的抽象層,而將相同的可變因素封裝在相同的具體實現類中。
因為抽象靈活性好,適應性廣,只要抽象的合理,可以基本保持軟體架構的穩定。而軟體中易變的細節可以從抽象派生來的實現類來進行擴充套件,當軟體需要發生變化時,只需要根據需求重新派生乙個實現類來擴充套件就可以了。
下面以 windows 的桌面主題為例介紹開閉原則的應用。
【例1】windows 的桌面主題設計。
設計模式 七大原則 開閉原則
開閉原則,是程式設計中最基礎 最重要的設計原則。乙個軟體實體如類,模組和函式應對外擴充套件開放 對提供方 對修改關閉 對使用方 用抽象構建框架,用實現擴充套件細節。當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的 來實現變化。說白了就是增加了新功能,盡量保證以前的使用...
設計模式七大原則之開閉原則
簡介 開閉原則是程式設計過程中最基礎 最重要的原則,前面講到的幾個原則,也都是為了實現開閉原則。那麼他是如何開放,又是如何關閉的呢?例項展示 這是乙個用於繪圖的類 使用方 class graphiceditor else if shape.my type 2 else if shape.my typ...
設計模式之七大原則 開閉原則
主要內容 提供方 擴充套件開放,使用方 修改關閉 盡量通過擴充套件實現變化,而不是修改,避免對原來的系統造成威脅 例子class graphiceditor else if s.m type 2 public void drawrectangle shape r public void drawci...