設計模式6大基本原則之(一)
單一職責原則(Single?Responsibility?Principle)
????就一個類而言。應該僅有一個引起它變化的原因。
為什麽要遵循單一職責?
? ? 假設一個類承擔的職責過多的,就等於把這些職責混合在一起。一個職責的變化可能會削弱或者抑制這個類完畢
其它職責的能力。
這樣的耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。
怎樣分離出遵循單一職責的類?
? ? 軟件設計真正要做的很多內容,就是發現職責並把那些職責相互分離。假設你能夠想到多於一個動機去改變一個
類,那麽這個類就有多於一個的職責。
小編寄語:單一職責減少了職責之間的耦合程度,也就是減少了類之間的耦合度,增強了類的內聚性。
通過將功能復
雜的類的職責分離。分成若幹個類增強了代碼的可維護性和可復用性。
體現了面向對象編程的基本原則。
開放—封閉原則(Open?Close?Principle)
? ? 軟件實體(類、模塊、函數等等)應該可能夠擴展。可是不可改動。
也就是說。這個原則應該具備兩個基本特征:對於擴展是開放的。對於更改是封閉的。
怎麽遵循?
????我們在設計的時候。要時刻考慮盡量讓這個類是足夠好,寫好了就不要去改動,假設有新的需求我們僅僅須要添加
新的類。原來的代碼不能動則不動。但無論模塊多‘封閉’都會存在一些無法對之封閉的變化。既然不可能全然封
閉,設計人員必須對於他設計的模塊應該對哪種變化封閉作出選擇。他必須先推測出最有可能發生變化的種類,然後
構造抽象隔離哪些變化。
? ? 小編寄語:我們在做不論什麽系統的時候。都不要指望系統會一開始需求確定,就再也不會變化。這是不現實的也是
不科學的想法。通過開放—封閉原則能夠對需求的改變保持相對穩定,從而使得系統在第一個版本號以後不斷推出新的
版本號。開放—封閉原則是面向對象設計的核心所在、遵循這個原則能夠帶來面向對象技術所聲稱的巨大優點(可維
護、可擴展、可復用、靈活性好)。開發者應該僅對程序在呈現出頻繁變化的部分作出抽象,然而,對於程序中的
每一個部分都刻意地進行抽象相同不是一個抽象。
依賴倒轉原則(Dependence?Inversion?Principle)
?????A.高層模塊不應該依賴低層模塊。B.抽象不應該依賴細節。
說白了就是要針對接口編程,不要針對實現編程。
遵循依賴倒轉原則的優點?
????通過面向接口編程,無論是高層模塊還是低層模塊。僅僅要有穩定的接口,那麽不論什麽一個更改都不用操心其它受到
影響。無論是高層模塊還是低層模塊都能夠非常easy地被復用。
? ? 小者寄語:依賴倒轉原則事實上能夠說是面向對象的標準,用哪種語言來編敲代碼不重要,假設編寫時考慮的都是
怎樣針對抽象編程而不是針對細節編程,即程序中全部的依賴關系都是終止於抽象類或者接口,那就是面向對象的設
計。反之那就是程序化設計了。
設計模式6大基本原則之(一)