Java設計模式之基本原則(二)

2021-07-04 01:24:10 字數 863 閱讀 7523

今天我們來說說另外乙個原則:開放封閉原則

中國有個成語叫縱橫捭闔,其中捭闔的意思就是開合的意思。

《捭闔》是《鬼谷子》的開篇之作。捭為開啟,闔為閉藏。捭闔之術,也就是開合有道、張弛有度。捭闔之術是世間萬物運轉的根本,也是縱橫家遊說的重要說術言略。既然萬物都要開合有道,我們寫**對什麼開放對什麼封閉也是有規則的,這就是我們今天要說的開發封閉原則

定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。

通常我們再做乙個專案時系統的需求可能會發生變化,如果說需求一旦發生變化就把整個專案重新再來顯然是不合理也不划算的,所以就要我們在設計的時候運用開放封閉原則,遇到需求功能我們通過新增類,介面等來擴充套件功能而不是修改原理的這樣當我們的需求發生變化時,我們為變化的部分增加乙個類或者介面之類的就可以,下次再變化我們增加乙個該介面的實現或者繼承這個類,這樣**的就變得清晰易維護了。下面我們舉個例子

比如,剛開始需求只是寫加法程式,很快在client類中完成後,此時變化沒有發生,需求讓再新增乙個減法功能,此時會發現增加功能需要修改原來這個類,這就違背了開放-封閉原則,於是你就應該考慮重構程式,增加乙個抽象的運算類,通過一些物件導向的手段,如繼承、動態等來隔離具體加法、減法與client耦合,需求依然可以滿足,還能應對變化。此時需求要新增乘除法功能,就不需要再去更改client及加減法類,而是增加乘法和除法子類即可。

但是我們也要認識到絕對的封閉式不存在的,正如古人說說孤陽不生,孤陰不長。絕對的修改關閉是不可能的,無論模組是多麼的『封閉『,都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。在我們最初編寫**時,假設變化不會發生,當變化發生時,我們就建立抽象來隔離以後發生同類的變化。

設計模式之基本原則

單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其它職責能力。這種耦合會導制脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙...

設計模式之基本原則

設計模式共三大型別,共23種 建立型 和物件的建立有關,涉及到物件例項化的方式 單例模式 簡單工廠模式 工廠模式 抽象工廠 建造者模式 原型模式 結構型 如何組合類和物件以獲得更大的結構 模式 裝飾模式 介面卡模式 組合模式 橋接模式 外觀模式 享元模式 行為型 用來對類和物件怎麼互動和怎麼分配職責...

設計模式基本原則

設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...