標籤:style blog http 使用 strong 2014 ar line
設計模式----六大原則
1、單一直責原則(SRP):就一個類而言,應該僅有一個引起他變化的原因
如果一個類承擔的職責過多,就等於把這些指責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
軟體設計真正要做的許多內容就是發現職責並把那些指責相互分離。如果你能夠想到多於一個的動機去改變一個類,那麼這個類就具有多於一個的職責。
2、開放-封閉原則:累對貨棧是開放的、對於更改是關閉的。
過去的錯誤,如果現在想去修改,這在軟體設計裡面可以實現,但是在人生裡面卻是被禁止的。因為時光是不能倒流的。我們能做的,就是把今天做到最好,去擴寬生命的長度,而不是一味的沉溺於自己的錯誤。
開放封閉原則是物件導向設計的核心、遵循原則可帶來易維護、可擴充、可複用、靈活性好、開發人員應該對頻繁變化的部分進行抽象、拒絕不成熟的抽象。
3、依賴倒轉原則:
高層模組不應該以來底層模組、兩個都應該依賴抽象。
抽象不應該依賴細節,細節應該依賴於抽象。
上學這麼多年,一直發現,物理學的課本裡面的概念最抽象,最不容易理解,一直在想,那些寫書的人,你們把課本寫的通俗易懂一點會死啊。。。但是學過抽象這個詞才發現,這樣寫有這樣寫的好處:概念越抽象,就越能概括大多數情況。物理學研究的非常宏觀,所以它的概念理應是非常抽象的。在類的設計中,也要儘可能的抽象,以方便以後的擴充。
也就是說要針對介面編程,不要針對實現編程。高層模組不應該依賴低層模組,兩個都應該依賴抽象。(高層模組與介面或抽象類別是關聯關係,低層模組與介面或抽象類別是繼承關係。
4、裡氏代換原則(LSP):子類可以完全代替父類使用
在生物學上,有個概念叫做遺傳。遺傳就類似繼承,這保證了後代完全擁有父輩的保留下來的非常有利生存的優勢。即使它們的父輩死去,它們也能完全承擔自己在生物鏈中的職責。同時,後代還有一個專屬的東西:變異。通過變異,實現優勝劣汰,讓自身發展的更好。
子類代替父類使用、擴充了功能、卻不違背開放封閉原則。
5、迪米特法則(LoD):
如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉寄這個調用。
在明代朱元璋當上皇帝後,為了防止將領擁兵自重(他還是比較做贼心虛的,明明自己就是“黃袍加身”當上皇帝的那種模式。。。),實行了一條政策,就是將領不掌管軍隊,而是由皇帝親自對軍隊實施調度,這樣,大大削弱了將領和士兵之間的聯絡,即使有些將領想要造反,也沒有士兵擁護。朱元璋這種方法,就如同在軟體設計中,減少兩個類的聯絡一樣。如果將領要調兵,要向皇帝請聖旨,然後皇帝發兵。通過減少聯絡來弱化關係,使其減少影響。
6 合成彙總複用
盡量使用合成/彙總,盡量不要使用類繼承。(關係越小越好、減少耦合)
我非常信奉老舍《茶館》裡的一句話:“莫談國事”。但是國事又是非常有意思的,讓人總是會忍不住想要想一想。在官場上,有這樣一種現象,比如,去年關注度很高的一位高官,一家全完。又比如,一起跟某某總統很熟,是校友什麼的,然後總統一上任,就把它提拔為高官。。。。。有很多事情是變換莫測的。但是,這裡有一個原則:盡量減少密切的連續,但是可以加強合作。也就是說,不要加入他們,以免將來被當成同黨一網打盡,但是可以成為盟友。
—————————————完美的圖———————————————
—————————chenchen—————————