在軟件開發中,爲了提升軟件系統的可維護性和可複用性,增長軟件的可拓展性和靈活性,程序員要儘可能根據7條原則來開發程序。從而提升軟件開發效率、節約軟件開發成本和維護成本。咱們將在下面的幾節中依次來介紹這7條原則,本節首先介紹開閉原則。程序員
開閉原則的定義編程
軟件實體應當對擴展開放,對修改關閉,這就是開閉原則的經典定義。架構
這裏的軟件實體包括如下幾個部分測試
項目中劃分出來的模塊spa
類和接口設計
犯法對象
開閉原則的含義是:當應用的需求發生改變時,在不修改軟件實體的源代碼或者二進制代碼的前提下,能夠良好的擴展模塊的功能,使其知足新的需求。也就是說,增長新需求的時候,不須要去修改以前的代碼。而是新增實現接口,加個新類,或者加個配置來實現新功能。blog
開閉原則的做用接口
開閉原則是面向對象程序設計的終極目標,它使軟件實體擁有必定的適應性和靈活性的同時具有穩定性和延續性。具體來講,其做用以下圖片
對軟件測試的影響:軟件遵照開閉原則的話,軟件測試就只須要對擴展的代碼進行測試就能夠了。由於原有的測試代碼仍然可以正常運行。
能夠提升代碼的可複用性:粒度越小,被複用的可能性就越大;在面向對象的程序設計中,根據原子和抽象編程能夠提升代碼的可複用性。
能夠提升軟件的可維護性:遵照開閉原則的軟件,其穩定性高和延續性強,從而易於拓展和維護。
開閉原則的實現方法
能夠經過"抽象約束、封裝變化"來實現開閉原則,即經過接口或者抽象類爲軟件實體定義一個相對穩定的抽象層,而將相同的可變因素封裝在相同的具體實現類中。
由於抽象靈活性好,適應性廣,只要抽象得合理,能夠基本保持軟件架構的穩定。而軟件中易變的具體實現細節能夠從抽象派生的實現類來擴展,當軟件需求發生變化時,只須要根據需求從新派生一個實現類來擴展就能夠了。
下面以 Windows 的桌面主題爲例介紹開閉原則的應用。
【例1】Windows 的桌面主題設計。
分析:Windows 的主題是桌面背景圖片、窗口顏色和聲音等元素的組合。用戶能夠根據本身的喜好更換本身的桌面主題,也能夠從網上下載新的主題。這些主題有共同的特色,能夠爲其定義一個抽象類(Abstract Subject),而每一個具體的主題(Specific Subject)是其子類。用戶窗體能夠根據須要選擇或者增長新的主題,而不須要修改原代碼,因此它是知足開閉原則的,其類圖如圖 1 所示。