英文名稱:open closed principle(ocp)
中文名稱:開閉原則
作 用:開閉原則與前面幾個原則不一樣,這個屬於是精神層面的原則,其目的就是告訴我們要擁抱變化,如何在考慮未來變化的同時來
設計好自己的專案,以及在變化發生的時候,如何來規避風險,使得變更帶來的影響最小化。乙個遵循開閉原則建造的專案,很定
在業務粒度上的劃分很定是很合理,會提高其復用性以及可維護性
核心之處:乙個軟體實體如類、模組和函式應該對擴充套件開發,對修改關閉,其告訴了我們要用積極的心態去擁抱需求,並告訴了我們解決新
需求的方案
理 解:對於設計好的類、模組與函式,未來如果有變更,那麼要用擴充套件的方式來解決,而不是去修改**來解決,我忽然到目前為止對待
需求變更的方式都是修改**,要知道此次修改了**,下次仍然會修改**,何不設計乙個好點的模式呢?
理論實踐:
用乙個書店售書來舉例子,正常設計的售書上線以後,忽然有個需求說100元以上的書是8折扣,100元以下的書是8折,那麼最後的到的使用者**很定會發生變化,那麼我們該如何來擁抱這一變化呢?去修改以前的類的源**很定時不合理的,因為今天打折,明天可能又會不打折,那麼利用開閉原則的指導,對於此種變更,應該通過實現乙個新的抽象類來解決。以前的設計模式上uml圖如下:
那麼既然有了新的需求,那就需要來修改設計,新的設計模式如下:
看到這種解決方案後,忽然心中對需求的不斷變化充滿了資訊和渴望,因為有了好的解決方案,渴望的是看自己遇到了真是的需求變更自己如何使用這一原則來處理問題。那麼如果問題繼續進一步的改進,公司忽然要加入計算機書籍的銷售,而且計算機書籍還擁有自己的屬性,那麼設計如下:
一旦這個系統是遵循此六種原則來設計的,基本上能夠經受得住一般的需求變動。
同樣也想到了自己現在專案的設計,其中有乙個需求的變動就是登入使用者的變動,剛開始做專案的時候說只有銷售、銷售總監以及普通使用者,後來又增加了4a銷售,4a銷售總監的角色,而每個不同的角色所看到的銷售總監以及銷售下拉列表類看到的資料會是不一樣的,所以在銷售總監類以及銷售類中寫了很臃腫的**,每增加乙個角色,我就得修改一次,修改完畢還得去測試。包括這個使用者型別疊加起來,如何處理還未想到乙個很好的解決方案,此時先放在這裡,等待今後的解決。
設計原則 開閉原則
開閉原則的含義是對擴充套件開放,對修改關閉。意思就是在遇到新的需求或者變動的時候,提倡對原 擴充套件使其滿足新的需求,不提倡修改原 來達到目的。乙個專案不可能在開發完畢後就一成不變了,它總會有新的需求或者對老的需求進行更新。這樣就要盡可能的遵從設計原則中的開閉原則,這個原則告訴我們,要盡量避免對原 ...
設計原則 開閉原則
怎樣的 改動才能被定義為 擴充套件 怎樣的 改動才定義為 修改 怎樣才算滿足或者違反開閉原則?修改 意味著違反開閉原則嗎?開閉原則是最難理解,也是最難掌握,同時也是最有用的一條原則。這條原則並不是看幾篇文章,理解了其概念就能掌握和靈活應用的。要想深入理解,掌握這條原則,需要大量的實戰。開閉原則,英文...
設計原則之開閉原則
定義 乙個軟體實體 類 模組或函式 應當對擴充套件開放,對修改關閉。也就是說軟體實體應盡量在不修改原有 的情況下進行擴充套件。問題 在軟體的生命週期內,因為變化 公升級和維護等原因需要對軟體原有 進行修改時,可能會給舊 中引入錯誤,也可能會使我們不得不對整個功能進行重構,並且需要重新測試。方案 當軟...