設計模式六大原則

2021-08-02 10:51:23 字數 2184 閱讀 7487

1. 單一職責原則(srp):就乙個類而言,應該僅有乙個引起它變化的原因。

單一職責原則的核心精神是:乙個類或者乙個介面,只負責一項職責。因為職責過多的話,當一項職責發生變化時能會引起其它職責的變化,這樣導致職責和功能上的依賴,將嚴重影響其內聚性和耦合度。

遵循單一職責原的優點有:

a.可以降低類的複雜度,乙個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;

b.提高類的可讀性,提高系統的可維護性;

c.如果單一職責原則遵守的好,當修改乙個功能時,可以顯著降低對其他功能的影響。

2. 開放封閉原則(asd):軟體實體(類、模組、函式等等等)應該是可以拓展的,但是不可修改。

開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的**能不動則不動。這個原則有兩個特性,乙個是說「對於擴充套件是開放的」,另乙個是說「對於更改是封閉的」。面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。這就是「開放-封閉原則」的精神所在了。

開閉原則的核心思想就是抽象程式設計,而不是對具體,因為抽象是相對穩定的,再說了我們還有介面(好多地方介面和抽象類都放一塊兒說了)。讓類依賴於固定的抽象物件,即可以達到封閉修改的目的;而通過物件導向的繼承和多型機制,又可以實現對抽象類的繼承,通過複寫其方法來改變固有的行為操作,也可以實現新的拓展方法,即可以達到開放的目的。

3. 黎克特制替換原則(lsp):子型別必須能夠替換掉它們的父類。

乙個軟體實體如果使用的是乙個父類的話,那麼一定適用於其子類,而且它察覺不出父類物件和子類物件的區別,也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化

黎克特制代換原則是實現開閉原則的重要方式之一,由於使用基類物件的地方都可以使用子類物件,因此在程式中盡量使用基類型別來對物件進行定義,而在執行時再確定其子類型別,用子類物件來替換父類物件。

黎克特制替換原則主要發力點是繼承基礎上的抽象和多型,具體就是子類必須實現父類的方法,是重寫;這裡要注意重寫(override)與過載(overload)的區分。

在此重溫【重寫與過載】

方法的過載,就是同樣的乙個方法能夠根據輸入資料的不同,做出不同的處理——有不同的引數列表,甚至不同的返回值(靜態多型性)

方法的在重寫,是子類繼承自父類的相同方法,輸入引數一樣,但要做出有別於父類的操作,要覆蓋父類方法。——相同引數,相同返回值,不同實現(動態多型性)

4. 依賴倒置原則(dip)

定義:高層模組不應該依賴低層模組,兩個都應該依賴於抽象;抽象不應該依賴於細節,細節應該依賴於抽象。

依賴倒轉其實就是誰也不要依靠誰,除了約定的介面,大家都可以靈活自如。依賴倒轉可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之那就是過程化的設計了。如果設計的各個部件或類相互依賴,這樣就是耦合度高,難以維護和擴充套件,這也就體現不出物件導向的好處了。

5. 迪公尺特原則(lod):乙個軟體實體應當盡可能少地與其他實體發生相互作用。

迪公尺特法則又叫最少知道原則

也稱為最少知識原則。如果乙個系統符合迪公尺特法則,那麼當其中某乙個模組發生修改時,就會盡量少地影響其他模組,擴充套件會相對容易,這是對軟體實體之間通訊的限制,迪公尺特法則要求限制軟體實體之間通訊的寬度和深度。迪公尺特法則可降低系統的耦合度,使類與類之間保持鬆散的耦合關係。

公尺特法則其根本思想,是強調了類之間的松耦合,類之間的耦合越弱,越有利於復用,乙個處在弱耦合的類被修改,不會對有關係的類造成影響,也就是說,資訊的隱藏促進了軟體的復用。

6. 介面隔離原則(isp)

介面隔離原則的含義是:建立單一介面,不要建立龐大臃腫的介面,盡量細化介面,介面中的方法盡量少。也就是說,我們要為各個類建立專用的介面,而不要試圖去建立乙個很龐大的介面供所有依賴它的類去呼叫。

採用介面隔離原則對介面進行約束時,要注意以下幾點:

a.介面盡量小,但是要有限度。對介面進行細化可以提高程式設計靈活性,但是如果過小,則會造成介面數量過多,使設計複雜化。所以一定要適度。

b.依賴介面的類定**務,只暴露給呼叫的類它需要的方法,它不需要的方法則隱藏起來。只有專注地為乙個模組提供定**務,才能建立最小的依賴關係。

c.提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情。

學會這幾大原則可以有效地的提高系統的復用性,維護性,擴充套件性。讓我們做出的系統更簡潔、更高效。這部分知識還需要我們在日後實踐中不斷加強學習。

設計模式六大原則

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

設計模式六大原則

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

設計模式六大原則

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