定義:就乙個類而言,應該僅有乙個引起它變化的原因(否則類應該被拆分)。
分析:1.核心:控制類的粒度大小,將物件解耦,提高其內聚性。
定義:軟體實體(類、模組、函式等)應該可以擴充套件,但是不可修改。
分析:1.兩個特徵:對於擴充套件是開放的(open for extension);對於更改是封閉的(close for modification)。
定義:抽象不應該依賴細節,細節應該依賴於抽象。要針對介面程式設計,不要針對實現程式設計。高層模組不應該依賴低層模組,兩個都應該依賴抽象。
分析:(物件導向設計的標誌)如果程式設計時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之則是面向過程的設計。
定義:子型別必須能夠替換掉它們的父型別(子類物件可以賦值給基類物件,基類物件不能賦值給子類物件)。
分析:乙個軟體實體如果使用的是乙個父類的話,那麼一定適用於其子類,而且它察覺不出父類物件和子類物件的區別。也就是說,在軟體裡面,把父類都替換成它的子類,程式的行為沒有變化。
定義:盡量使用合成/聚合,盡量不要使用類繼承。
分析:1.合成表示一種強的『擁有』關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
2.聚合表示一種弱的『擁有』關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分。
3.好處:優先使用物件的合成/聚合將有助於保持每個類被封裝,並被集中在單個任務上,這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。
定義:如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫。
分析:1.強調的前提:在類的結構上,每乙個類都應當盡量降低成員的訪問許可權。
2.根本思想:強調了類之間的松耦合。
3.類之間的耦合越弱,越有利於復用。
設計模式 六大設計原則
剛剛結束設計模式學習時,感覺哪哪的抓不住重點,雖然之前師傅給勾了寫比較重要的設計模式,但是給我的感覺設計模式怎麼全都乙個樣子。通過對一些文章的瀏覽,簡單的對設計原則總結了一下。設計模式,就是設計範例。是經典問題的解決方案,是可以讓學習者舉一反三的,有研究價值 有交流價值的例子。設計模式的本質是物件導...
設計模式 六大設計原則
solid s 單一職責原則 o 開放封閉原則 l 黎克特制代換原則 i 介面隔離原則 d 依賴倒轉原則 故事 手機拍攝ufo 定義 就乙個類而言,應該僅有乙個引起它變化的原因。通俗講就是我們不要讓乙個類承擔過多的職責。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或...
設計模式的六大設計原則
1 單一指責原則 single responsibility principle,srp 每個類的功能單一,不能多功能 2 黎克特制替換原則 liskov substitution principle lsp,lsp 1.子類必須完全實現父類的方法 2.子類可以有自己的個性 3.覆蓋或實現父類的方法...