設計模式-六大原則

來源:互聯網
上載者:User

標籤:style   blog   http   使用   strong   2014   ar   line   

設計模式----六大原則






1、單一直責原則(SRP):就一個類而言,應該僅有一個引起他變化的原因


         如果一個類承擔的職責過多,就等於把這些指責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。


         軟體設計真正要做的許多內容就是發現職責並把那些指責相互分離。如果你能夠想到多於一個的動機去改變一個類,那麼這個類就具有多於一個的職責。



2、開放-封閉原則:累對貨棧是開放的、對於更改是關閉的。


         過去的錯誤,如果現在想去修改,這在軟體設計裡面可以實現,但是在人生裡面卻是被禁止的。因為時光是不能倒流的。我們能做的,就是把今天做到最好,去擴寬生命的長度,而不是一味的沉溺於自己的錯誤。


         開放封閉原則是物件導向設計的核心、遵循原則可帶來易維護、可擴充、可複用、靈活性好、開發人員應該對頻繁變化的部分進行抽象、拒絕不成熟的抽象。




3、依賴倒轉原則:


         高層模組不應該以來底層模組、兩個都應該依賴抽象。

         抽象不應該依賴細節,細節應該依賴於抽象。


         上學這麼多年,一直發現,物理學的課本裡面的概念最抽象,最不容易理解,一直在想,那些寫書的人,你們把課本寫的通俗易懂一點會死啊。。。但是學過抽象這個詞才發現,這樣寫有這樣寫的好處:概念越抽象,就越能概括大多數情況。物理學研究的非常宏觀,所以它的概念理應是非常抽象的。在類的設計中,也要儘可能的抽象,以方便以後的擴充。

         也就是說要針對介面編程,不要針對實現編程。高層模組不應該依賴低層模組,兩個都應該依賴抽象。(高層模組與介面或抽象類別是關聯關係,低層模組與介面或抽象類別是繼承關係。

                   


4、裡氏代換原則(LSP):子類可以完全代替父類使用


         在生物學上,有個概念叫做遺傳。遺傳就類似繼承,這保證了後代完全擁有父輩的保留下來的非常有利生存的優勢。即使它們的父輩死去,它們也能完全承擔自己在生物鏈中的職責。同時,後代還有一個專屬的東西:變異。通過變異,實現優勝劣汰,讓自身發展的更好。


         子類代替父類使用、擴充了功能、卻不違背開放封閉原則。

                 


5、迪米特法則(LoD): 

 

         如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉寄這個調用。


         在明代朱元璋當上皇帝後,為了防止將領擁兵自重(他還是比較做贼心虛的,明明自己就是“黃袍加身”當上皇帝的那種模式。。。),實行了一條政策,就是將領不掌管軍隊,而是由皇帝親自對軍隊實施調度,這樣,大大削弱了將領和士兵之間的聯絡,即使有些將領想要造反,也沒有士兵擁護。朱元璋這種方法,就如同在軟體設計中,減少兩個類的聯絡一樣。如果將領要調兵,要向皇帝請聖旨,然後皇帝發兵。通過減少聯絡來弱化關係,使其減少影響。


6  合成彙總複用


         盡量使用合成/彙總,盡量不要使用類繼承。(關係越小越好、減少耦合)


         我非常信奉老舍《茶館》裡的一句話:“莫談國事”。但是國事又是非常有意思的,讓人總是會忍不住想要想一想。在官場上,有這樣一種現象,比如,去年關注度很高的一位高官,一家全完。又比如,一起跟某某總統很熟,是校友什麼的,然後總統一上任,就把它提拔為高官。。。。。有很多事情是變換莫測的。但是,這裡有一個原則:盡量減少密切的連續,但是可以加強合作。也就是說,不要加入他們,以免將來被當成同黨一網打盡,但是可以成為盟友。



                                  


—————————————完美的圖———————————————

—————————chenchen—————————


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.