設計模式之六大原則

2021-07-10 04:36:25 字數 1933 閱讀 3100

設計模式——6大原則

概念:就乙個類而言,應該僅有乙個引起它變化的原因。

解釋:所謂的單一職責,就是說乙個類能完成的功能只有乙個,如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。自我感覺乙個類就跟乙個人一樣,乙個人的精力是有限的,如果擔任過多的職責,就會分散注意力,導致對自己所負責的工作完成的不是太好。如果一類中耦合的職責過多,這樣的耦合會導致脆弱的設計,當變化發生時,設計就會遭到意想不到的破壞。

軟體設計真正要做的許多內容,就是發現職責並把那些職責相互分離,要判斷是否應該分離出類來,就是如果就你能夠想到多餘乙個的動機去改變乙個類,那麼這個類就是有多餘乙個的職責。這樣的情況就應該考慮類的職責分離。

概念:開發封閉原則是說軟體實體(類、模組、函式等待)應該可以擴充套件,但是不可修改。

兩個特徵:對於擴充套件是開放的,對於更改是封閉的。

解釋:開放-封閉原則是說設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,只需要增加一些類就完事了,原來的**能不動則不動。也就是說面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。

開放-封閉原則是物件導向設計的核心所在,遵循這個原則可以帶來物件導向技術所聲稱的巨大好處,也就是可維護、可擴充套件、可復用靈活性好、開發人員應該對程式中呈現出頻繁變化的那些部分作出抽象,然而,對於應用程式中的每個部分都刻意的進行抽象同樣不是乙個號注意。拒絕不成熟的抽象和抽象本身一樣重要。

概念:

a、高層模組不應該依賴底層模組。這兩個都應該依賴抽象。

b、抽象不應該依賴細節。細節應該依賴抽象。

解釋:為什麼使用依賴倒轉原則呢?這這裡解釋一下,面向過程開發時,為了使**可以復用,把一些**寫成好多函式的程式庫,這樣我們在做新專案是,去呼叫這些底層的函式 就可以了。這就是搞成模組依賴底層模組。但是如果其他地方想再次呼叫這個高層模組,而這個高層模組是跟底層模快連在一起的,這樣就會造成一團混亂。如果高層模組不依賴於底層模組,兩個都一概依賴於抽象,這樣處理,大家都會靈活自如。

依賴倒轉其實可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫時考慮的都是如果針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終於於抽象類或者介面,那就是物件導向的設計,反之就是過程多的設計了。

概念:子型別必須能夠替換掉他們的父型別。

解釋:乙個軟體實體如果使用的是乙個父類的話,那麼一定適用於其子類,而且他察覺不出父類物件和子類物件的區別。也就是說,在軟體裡邊,把父類都替換成它的子類,程式的行為沒有變化。正因為這兒原則,使得繼承復用成為了可能,只有當子類可以替換掉父類,軟體單位的功能不受到影響是時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。正由於子類的可替換性,才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。也就是說由於黎克特制原則,才使得開發-封閉原則成為了可能。

概念:迪公尺特法則也叫最少知識原則。就是說如果兩個類不彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某個方法的話,可以通過第三者**這個呼叫。

解釋:迪公尺特法則首先強調的是在類的結構設計上,每個類都應當盡量降低成員的訪問許可權,也就是說乙個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。所以迪公尺特法則的根本思想是強調了類之間的松耦合。類之間的耦合越弱,越有利於復用,乙個處在弱耦合的類被修改,不會對有關係的類造成波及。

概念:盡量使用合成/聚合,盡量不要使用類繼承。

解釋:聚合表示一種弱的『擁有』關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分;合成則是一種強的『擁有』關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。如下圖。使用合成/聚合復用的原則的好處是,優先使用物件的合成(聚合)將有助於保持每個類被封裝,並被集中在單個任務上。這樣類和繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。

設計模式之六大原則

無規矩不成方圓,同樣的設計模式也有其內定的一些規則,這些規則使得我們更加方面的使用設計模式的各種模式。以下簡介六個原則 1 單一職責原則 定義 就乙個類而言,應該僅有乙個引起它變化的原因。解釋 如果乙個類承擔的職責過多,則就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責...

設計模式之 六大原則

設計模式中,有六大經典的原則,以下是本人在學習過程中總結的,學習過程中參考了 大話設計模式 這本書,以下為個人見解,如有不當,請大家指出。以便幫助後學習的朋友更簡單的理解和學習。1 單一職責原則 single responsibility principle 顧名思義,單一職責,就是讓系統中的每個類...

設計模式之六大原則

單一職責原則 單一職責原則 srp 乙個類而言,有且只有乙個引起它變化的原因。例子 攝像機和手機相比,攝像機攝像的職責單一,攝像效果清晰 程式設計時要做到單一職責,這樣的 易維護 擴充套件 復用 靈活多樣 開放 封閉原則 開放 封閉原則 軟體實體 類 模組 函式等 可以擴充套件,但是不可修改 對於擴...