就乙個類而言,應該僅有乙個引起它變化的原因。應該只有乙個職責。 每乙個職責都是變化的乙個軸線,如果乙個類有乙個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當乙個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如:要實現邏輯和介面的分離。
例子開始需求是做乙個加法的操作。後來繼續加入減法、乘法、除法。也就是先有乙個運算介面類,提供乙個介面getresult(),然後在各種不同需求去實現對應子類,這樣當需求變化時對於外部呼叫的函式修改就比較少,更多的是聚焦本身的功能。我們來上一下大話設計模式中的圖:
黎克特制替換原則的內容可以描述為: 「派生類(子類)物件可以在程式中代替其基類(超類)物件。」
程式要依賴於抽象介面,不要依賴於具體實現。簡單的說就是要求對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合。
也就是業務邏輯層主要就是呼叫介面而不是呼叫具體的實現類。這樣上層修改起來就比較簡單。主要修改內容可以幾種在具體實現中。
避免上層呼叫下層,上層依賴於下層,當下層劇烈變動時上層也要跟著變動,這就會導致模組的復用性降低而且大大提高了開發的成本。
乙個類對於其他類知道的越少越好,就是說乙個物件應當對其他物件有盡可能少的了解,只和朋友通訊,不和陌生人說話。
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...
物件導向設計原則
物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...