原文:
單一職責原則(srp):
乙個物件應該值包含單一的職責,並且該職責被完整地封裝在乙個類中。
另一種表述:就乙個類而言,應該僅有乙個引起它變化的原因。
開放封閉原則(ocp):
軟體實體(類、模組、函式等)應該可以擴充套件,但是不可修改。也就是說在設計乙個軟體實體(類,模組等)的時候,應該使這個軟體實體在不被修改的前提下被擴充套件,即實現在不修改原**的情況下改變模組的行為。
依賴倒轉原則(dip):
高層模組不應依賴底層模組,兩個都應該依賴抽象。抽象不應該依賴細節,細節應該依賴抽象。
另一種表述:要針對介面程式設計,不要針對實現程式設計。
黎克特制代換原則(lsp):
子類必須能夠替換掉它們的父類。
迪公尺特法則(lod):
又叫最少知識原則、不要和「陌生人」講話原則,要求乙個類(軟體實體)應該盡可能少的和其它類(軟體實體)發生作用。
另一種表述:如果兩個類不必直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫。
介面隔離原則(isp):
使用多個專門的介面比使用單一的介面要好。
另一種表述:一旦乙個介面太大,則需要將它分割成一些更細小的介面,使用該介面的客戶端僅需要知道與之相關的方法即可。
合成/聚集復用原則(carp):
在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部份,新的物件通過向這些物件的委派達到復用已有功能的目的。
另一種表述:盡量使用合成/聚集復用而不是繼承復用。
參考:
《大話設計模式》程杰 清華大學出版社
《設計模式》劉偉 清華大學出版社
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...
物件導向設計原則
物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...