目的是使程式更加靈活
開-閉原則(目標、總的指導思想)
open closed principle
對擴充套件開放,對修改關閉。
增加新功能,不改變原有**。
類的單一職責(乙個類的定義)
single responsibility principle
乙個類有且只有乙個改變它的原因。
適用於基礎類,不適用基於基礎類構建複雜的聚合類。
//對應封裝
依賴倒置(依賴抽象)
呼叫父類
dependency inversion principle
客戶端**(呼叫的類)盡量依賴(使用)抽象的元件。
抽象的是穩定的。實現是多變的。
找個代表,依賴倒置,隔離呼叫和定義
//封裝、繼承、介面、委託,事件….無時無刻不在體現依賴倒置
組合復用原則(復用的最佳實踐)
composite reuse principle
如果僅僅為了**復用優先選擇組合復用,而非繼承復用。
組合的耦合性相對繼承低。
//關聯關係將某個類當成本類的屬性來使用
//[關聯復用原則]也可以這麼說 連線兩邊的變化點
黎克特制替換(繼承後的重寫,指導繼承的設計)
liskov substitution principle
父類出現的地方可以被子類替換,在替換後依然保持原功能。
子類要擁有父類的所有功能。
子類在重寫父類方法時,盡量選擇擴充套件重寫(base.getsalary()+bonus),防止改變了功能。
重寫改變方法表位址
介面隔離(功能拆分)
inte***ce segregation principle
盡量定義小而精的介面inte***ce,少定義大而全的介面。
小介面之間功能隔離,實現類需要多個功能時可以選擇多實現.或介面之間做繼承。
面向介面程式設計而非面向實現(切換、並行開發) 抽象工廠
客戶端通過一系列抽象操作例項,而無需關注具體型別。
便於靈活切換一系列功能。
實現軟體的並行開發。
迪公尺特法則(類與類互動的原則)
law of demeter
不要和陌生人說話。
類與類互動時,在滿足功能要求的基礎上,傳遞的資料量越少越好。因為這樣可能降低耦合度。
乙個方法使用委託 多個方法使用介面 或者事件這些方法
物件導向八大設計原則
1 依賴倒置模式 dip 穩定不依賴於變化,提出了抽象類。2 開放封閉原則 ocp 對擴充套件開放,對更改封閉 類模組應該是可擴充套件,不可修改的 3 單一職責原則 srp 類裡面不要放太多的成員,這代表這個類裡面隱含了多個責任。4 liskov替換原則 lsp 5介面隔離原則 isp 介面應該小而...
C 設計模式(二) 物件導向八大設計原則
變化是復用的天敵!物件導向設計最大的優勢在於 抵禦變化!從巨集觀層面來看,物件導向的構建方式更能適應軟體的變化,能將變化所帶來的影響減為最小。從微觀層面來看,物件導向的方式更強調各個類的 責任 由於需求變化導致的新增型別不應該影響原來型別的實現 是所謂各負其責 從語言實現層面來看,物件封裝了 和資料...
設計模式 八大設計原則
1.依賴倒置原則 dip 1 高層模組 穩定 不應該依賴於低層模組 變化 二者都應該依賴於抽象 穩定 2 抽象 穩定 不應該依賴於實現細節 變化 實現細節應該依賴於抽象 穩定 這裡 抽象 指的是抽象基類,實現細節 是指子類,低層模組繼承於抽象類,抽象類為高層模組提供低層模組的介面。2.開放封閉原則 ...