單一職責原則
就乙個類而言,應該僅有乙個引起它變化的原因。
如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其它職責能力。這種耦合會導制脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責。
開放――封閉原則
軟體實體可以擴充套件,但是不可修改。即對於擴充套件是開放的,對於修改是封閉的。面對需求,對程式的改動是通過增加**來完成的,而不是改動現有的**。
當變化發生時,我們就建立抽象來隔離以後發生同類的變化。
開放――封閉原則是物件導向的核心所在。開發人員應該對程式中呈現出頻繁變化的那部分做出抽象,拒絕對任何部分都刻意抽象及不成熟的抽象。
黎克特制代換原則
乙個軟體實體如果使用的是乙個父類的話,那麼一定適用其子類。而且它察覺不出父類物件和子類物件的區別。也就是說:在軟體裡面,把父類替換成子類,程式的行為沒有變化。
子型別必須能夠替換掉它們的父型別。
依賴倒轉原則
抽象不應該依賴細節,細節應該依賴抽象。即針對介面程式設計,不要對實現程式設計。
高層模組不能依賴低層模組,兩者都應依賴抽象。
依賴倒轉原則是物件導向的標誌,用哪種語言編寫程式不重要,如果編寫時考慮的是如何針對抽象程式設計而不是針對細節程式設計,即程式的所有依賴關係都終止於抽象類或介面。那就是物件導向設計,反之那就是過程化設計。
迪公尺特法則
如果兩個類不直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果乙個類需要呼叫另乙個類的某個方法的話,可以通過第三個類**這個呼叫。
在類的結構設計上,每乙個類都應該盡量降低成員的訪問許可權。
該法則在後面的介面卡模式、解釋模式等中有強烈的體現。
合成/聚合復用原則
盡量使用合成/聚合,盡量不要使用類繼承。
優先使用物件的合成/聚合將有助於保持對每個類被封裝,並被集中在單個任務上。這樣類和類繼承層次都會保持較小規模,並且不太可能增長為不可控制的龐然大物。
合成(組合)和聚合都是關聯的特殊種類。聚合表示一種弱的『擁有』關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分;合成則是一種強的『擁有』關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
有些原則並未理解透徹,通過學習接下來的各種設計模式進行理解。
設計模式之基本原則
設計模式共三大型別,共23種 建立型 和物件的建立有關,涉及到物件例項化的方式 單例模式 簡單工廠模式 工廠模式 抽象工廠 建造者模式 原型模式 結構型 如何組合類和物件以獲得更大的結構 模式 裝飾模式 介面卡模式 組合模式 橋接模式 外觀模式 享元模式 行為型 用來對類和物件怎麼互動和怎麼分配職責...
設計模式基本原則
設計模式基本原則 開 閉 原則 open closed principle,或者ocp 原文 software entities should be open for extension,but closed for modification.解釋 乙個軟體實體應當對擴充套件開放,對修改關閉。黎克特...
設計模式基本原則
1 單一職責原則 類的職責要單一 不要將太多的職責放到同乙個類當中去。eg 資料結構職責類和演算法行為都放在乙個類。我們應該把資料結構和行為分開。2 開閉原則 乙個軟體實體應該對擴充套件開放,對修改關閉。可變性封裝 3 黎克特制代換原則 可以接受基類物件的地方必然要可以接受子類的物件。4 依賴倒轉原...