設計模式學習筆記 物件導向設計原則

2021-07-15 13:03:17 字數 2089 閱讀 1518

單一職責原則定義

單一職責原則(srp:single responsibility principle)又稱單一功能原則,物件導向五個基本原則(solid)之一。它規定乙個類應該只有乙個發生變化的原因。該原則由羅伯特·c·馬丁(robert c. martin)於《敏捷軟體開發:原則、模式和實踐》一書中給出的。馬丁表示此原則是基於湯姆·狄馬克(tom demarco)和meilir page-jones的著作中的內聚性原則發展出的。

所謂職責是指類變化的原因。如果乙個類有多於乙個的動機被改變,那麼這個類就具有多於乙個的職責。而單一職責原則就是指乙個類或者模組應該有且只有乙個改變的原因。

開閉原則定義

開閉原則(ocp:open close principle)是物件導向設計中「可復用設計」的基石,是物件導向設計中最重要的原則之一,其它很多的設計原則都是實現開閉原則的一種手段。

軟體實體應當對擴充套件開放,對修改關閉.

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

對於擴充套件是開放的(open for extension)。這意味著模組的行為是可以擴充套件的。當應用的需求改變時,我們可以對模組進行擴充套件,使其具有滿足那些改變的新行為。也就是說,我們可以改變模組的功能。

對於修改是關閉的(closed for modification)。對模組行為進行擴充套件時,不必改動模組的源**或者二進位制**。模組的二進位制可執行版本,無論是可鏈結的庫、dll或者.exe檔案,都無需改動。

黎克特制替換原則定義

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

黎克特制替換原則(liskov substitution principle lsp)物件導向設計的基本原則之一。黎克特制替換原則中說,任何基類可以出現的地方,子類一定可以出現。 lsp是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。

依賴倒轉原則定義

依賴倒置原則

高層次的模組不應該依賴於低層次的模組,他們都應該依賴於抽象。

抽象不應該依賴於具體實現,具體實現應該依賴於抽象。

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

介面隔離原則定義

客戶端不應該依賴它不需要的介面;乙個類對另乙個類的依賴應該建立在最小的介面上。

isp–inte***ce segregation principle

使用多個專門的介面比使用單一的總介面要好。

乙個類對另外乙個類的依賴性應當是建立在最小的介面上的。

乙個介面代表乙個角色,不應當將不同的角色都交給乙個介面。沒有關係的介面合併在一起,形成乙個臃腫的大介面,這是對角色和介面的汙染。

「不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。」這個說得很明白了,再通俗點說,不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。

合成復用原則

定義定義

合成復用原則又稱為組合/聚合復用原則(composition/aggregate reuse principle, carp),其定義如下:

合成復用原則(composite reuse principle, crp):盡量使用物件組合,而不是繼承來達到復用的目的。

迪公尺特法則定義

迪公尺特法則來自於2023年美國東北大學(northeastern university)乙個名為「demeter」的研究專案。迪公尺特法則又稱為最少知識原則(leastknowledge principle, lkp),其定義如下:

迪公尺特法則(law of demeter, lod):乙個軟體實體應當盡可能少地與其他實體發生相互作用。

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

設計模式學習筆記 物件導向設計原則

1 單一職責 乙個類只應該做一樣事情 2 開閉原則 對擴充套件開放,對修改封閉 3 黎克特制代換 以父類的名義統一進行呼叫,使用時賦以具體子類,實現多型。4 依賴倒轉 是黎克特制代換原則另一種表述。針對介面 抽象程式設計,其實也就是以父類的名義統一進行呼叫,使用時賦以具體子類,實現多型。5 介面隔離...

JS學習筆記 物件導向,設計模式

js中,只有函式具有作用域。定義在乙個函式中的變數,在該函式內嵌的函式是可以訪問的。函式是執行在定義他們的作用域中,而不是執行在呼叫他們的作用域中。定義類的三種基本模式 1.門戶大開型,全部是共有的 2.下劃線變數模式,從程式設計規範上區分了私有變數 3.採用閉包實現真正的私有屬性和方法 缺點 每個...

物件導向設計模式學習(一) 物件導向設計模式與原則

1。軟體設計模式是一些常見問題的一般解決案。2。物件導向設計模式是在物件導向開發中描述物件之間資訊通訊的組織關係。3。面象物件的三個特點 封裝 內部實現的隱藏 繼承 實現 復用 多型 改寫物件的行為 4。實現封裝,繼承,多型並不代表就是乙個面象物件模式設計,是面象物件模式的設計才導致了封裝,繼承,多...