設計模式之六大原則

2021-09-26 09:00:17 字數 1571 閱讀 7251

最近在學設計模式,才理解真正的物件導向程式設計,明白物件導向程式設計對軟體開發的重要性。

以下是有關於設計模式的一點筆記。

物件導向程式設計的三大特性:封裝、繼承、多型

乙個好的軟體應該具備以下特點:**易於維護、易擴充套件、易復用,類與類之間關係應強內聚、松耦合

設計模式使得程式更加靈活,容易修改,並且易於復用,類之間的耦合越弱,越有利於復用,乙個處於弱耦合的類被修改,不會對有關係的類造成波及。

設計模式有六大原則:

單一職責原則

就乙個類而言,應該僅有乙個引起它變化的原則。

如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。

開放封閉原則

軟體實體(類、模組、函式等等)應該可以擴充套件,但是不可以修改。

對於擴充套件是開放的,對於更改是封閉的。無論模組是多麼的"封閉",都會存在一些無發對之封閉的變化。既然不可能完全封閉,設計人員必須對於他設計的模組應該堆哪種變化封閉做出選擇,猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。開放封閉原則是物件導向設計的核心所在,遵循這個原則可以使程式可維護、可擴充套件、可復用、靈活性好。

依賴倒轉原則

高層模組不應該依賴低層模組。兩個都應該依賴抽象。抽象不應該依賴細節。細節應該依賴抽象。

要針對介面程式設計,不要對實現程式設計,這是物件導向程式設計的標誌。例如:要做新專案時,發現業務邏輯的高層模組都是一樣的,但是客戶希望使用不同的資料庫或儲存資訊方式,但是高層模組都是與低層的訪問資料庫繫結在一起,沒辦法復用這些高層模組。

黎克特制替換原則

子型別必須能夠替換它們的型別。

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

迪公尺特法則(也叫最少知識原則)

如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫。

在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權,也就是說,乙個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。迪公尺特法則其根本思想,是強調了類之間的松耦合。

合成/聚合復用原則

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

聚合表示一種弱的"擁有"關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分;合成則是一種強的「擁有」關係,體現了嚴格的部分和整體的關係,部分和整體生命後期一樣。例如,大雁由兩個翅膀,翅膀與大雁是部分和整體的關係,並且它們的生命週期相同的,於是大雁和翅膀就是合成關係。而大雁是群居動物,所以每只大雁都是屬於乙個雁群,乙個雁群可以有多隻大雁,所以大雁和雁群是聚合關係。該原則的好處:優先使用物件的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上,這樣類和類繼承層次會保持較小規模,並且不大可能增長為不可控制的龐然大物。

設計模式之六大原則

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

設計模式之 六大原則

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

設計模式之六大原則

設計模式 6大原則 概念 就乙個類而言,應該僅有乙個引起它變化的原因。解釋 所謂的單一職責,就是說乙個類能完成的功能只有乙個,如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。自我感覺乙個類就跟乙個人一樣,乙個人的精力是有限的,如果擔任過...