1、單一職責原則(single responsibility principle,簡稱srp)
單一職責原則,就乙個類而言,應該僅有乙個引起它變化的原因。這是高內聚的絕佳體現,如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會消弱或者一直這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。而軟體設計真正要做的許多內容,就是發現職責,並把這些職責相互分離。
2、 開放--封閉原則(the open-closed principle,簡稱ocp)
開放--封閉原則,是說軟體實體(類、模組、函式等等)應該可以擴充套件,但是不可以修改。即對於擴充套件是開放的,對於更改是封閉的。我們不可能做到未卜先知,在設計的時候盡可能讓乙個類足夠好,設計好了就不要去修改了;不能完全封閉的情況下,當發生變化時,我們就建立抽象來隔離以後發生的同類變化。
3、依賴倒轉原則(dependence inversion principle )
依賴倒轉原則,指高層模組不應該依賴低層模組,兩個都應該依賴抽象;抽象不應該依賴細節,細節應該依賴抽象。說白了就是要針對介面程式設計,不要對實現程式設計。舉個例子:計算機硬體中,如果記憶體壞了,那麼只需要換乙個記憶體條就可以了,而不需要去換乙個主機板,在這裡記憶體是乙個介面類,只要符合他的規格要求就行,無論是那一根。
4、黎克特制代換原則(liskov substitution principle,簡稱lsp)
黎克特制代換原則,子型別必須能夠替換掉他們的父型別。在軟體裡面,把父類都替換成其子類,程式的行為不會發生變化。正是由於子型別的可替換性才使得使用父型別的模組在無需修改的情況下就可以擴充套件。
5、迪公尺特法則(law of demeter)
迪公尺特法則,如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法時,可以通過第三者**這個呼叫。類之間的耦合越弱,就越有利於復用,乙個處在弱耦合的類被修改,不會對有關係的類造成波及。 主要是強調了類之間的松耦合。不要和陌生人說話。
6、合成/聚合復用原則(composition/aggregation principle],簡稱carp)
合成聚合復用原則,盡量使用合成/聚合,盡量不使用類繼承。合成聚合是「has a」的關係,而繼承是「is a」的關係。由於繼承是一中強耦合的結構,父類變,子類必變。所以不是「is a」關係,我們一般不要用繼承。優先使用合成聚合復用原則,有助於保持每個類的封裝,降低繼承的層次。
設計模式六大原則
0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...
設計模式六大原則
0.05 設計模式 設計模式 規範 筆記 大話設計模式 物件導向的關鍵在於封裝,封裝好了才能很好的復用,達到單一職責和開放擴充套件 封閉更改的效果。1 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.增加功能不應該修改已有的 避免修改出錯及重複測試.如果你能夠想到多於乙個的動機去改變乙個類...
設計模式六大原則
參考文章 單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。...