Java 設計模式六大原則

2021-07-02 12:24:06 字數 1685 閱讀 2001

在物件導向設計領域,軟體開發人員在開發過程中總結了不少的經驗,許多經驗在現代軟體開發過程中已經被認為是原則來被遵守。

單一職責原則(srp:single responsibility principle)又稱單一功能原則,它規定乙個類應該只有乙個發生變化的原因。單一職責原則就是指乙個類或者模組應該有且只有乙個改變的原因。

如果乙個類承擔的職責過多,就等於把這些職責耦合在一起了。乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。而如果想要避免這種現象的發生,就要盡可能的遵守單一職責原則。此原則的核心就是解耦和增強內聚性

開閉原則(ocp:open-closed principle)。軟體實體應當對擴充套件開放,對修改關閉。這句話說得略微有點專業,我們把它講得更通俗一點,也就是:軟體系統中包含的各種元件,例如模組(modules)、類(classes)以及功能(functions)等等,應該在不修改現有**的基礎上,引入新功能。開閉原則中「開」,是指對於元件功能的擴充套件是開放的,是允許對其進行功能擴充套件的;開閉原則中「閉」,是指對於原有**的修改是封閉的,即不應該修改原有的**。

遵循開閉原則設計出的模組具有兩個主要特徵:

實現方法抽象,把抽象介面與實現分離。

黎克特制替換原則(lsp:liskov substitution principle),ocp作為oo的高層原則,主張使用「抽象」和「多型」將設計中的靜態結構改為動態結構,維持設計的封閉性。「抽象」是語言提供的功能。「多型」由繼承語義實現。

黎克特制替換原則中說,任何基類可以出現的地方,子類一定可以出現。 lsp是繼承復用的基石,只有當派生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而派生類也能夠在基類的基礎上增加新的行為。使用基類的引用的函式,必須能夠在不知道具體派生類物件型別的情況下使用它們。

lsp原則是對ocp原則的補充,ocp的關鍵步驟是抽象化,而基類和子類的繼承關係就是抽象化的具體體現,所以lsp是對實現抽象化的具體步驟的規範。

所謂依賴倒置原則(dip:dependence inversion principle)就是要依賴於抽象,不要依賴於具體。簡單的說就是要求針對抽象針對介面進行程式設計,不要針對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。

依賴倒置原則:

實現:盡量使用層次高的類

介面隔離原則(isp:inte***ce segregation principle):使用多個專門的介面比使用單一的總介面要好。不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。

迪公尺特法則(lod:law of demeter),就是說乙個物件應當對其他物件有盡可能少的了解,不和陌生人說話。

迪公尺特法則可以簡單說成:talk only to your immediate friends。 又被解釋為下面幾種方式:乙個軟體實體應當盡可能少的與其他實體發生相互作用。每乙個軟體單位對其他的單位都只有最少的知識,而且侷限於那些與本單位密切相關的軟體單位。

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...

設計模式六大原則

參考文章 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。...