1. 程式人生 > >設計模式6大基本原則之(一)

設計模式6大基本原則之(一)

back center 可維護性 擴展 tex 通過 人員 程序 csdn

版權聲明:本文為博主原創文章,轉載請註明出處:http://blog.csdn.net/zhangzijiejiayou https://blog.csdn.net/zhangzijiejiayou/article/details/28110119

單一職責原則(Single?Responsibility?Principle)

????就一個類而言。應該僅有一個引起它變化的原因。

為什麽要遵循單一職責?

? ? 假設一個類承擔的職責過多的,就等於把這些職責混合在一起。一個職責的變化可能會削弱或者抑制這個類完畢

其它職責的能力。

這樣的耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。

怎樣分離出遵循單一職責的類?

? ? 軟件設計真正要做的很多內容,就是發現職責並把那些職責相互分離。假設你能夠想到多於一個動機去改變一個

類,那麽這個類就有多於一個的職責。

小編寄語:單一職責減少了職責之間的耦合程度,也就是減少了類之間的耦合度,增強了類的內聚性。

通過將功能復

雜的類的職責分離。分成若幹個類增強了代碼的可維護性和可復用性。

體現了面向對象編程的基本原則。

開放—封閉原則(Open?Close?Principle)

? ? 軟件實體(類、模塊、函數等等)應該可能夠擴展。可是不可改動。

也就是說。這個原則應該具備兩個基本特征:對於擴展是開放的。對於更改是封閉的。

怎麽遵循?

????我們在設計的時候。要時刻考慮盡量讓這個類是足夠好,寫好了就不要去改動,假設有新的需求我們僅僅須要添加

新的類。原來的代碼不能動則不動。但無論模塊多‘封閉’都會存在一些無法對之封閉的變化。既然不可能全然封

閉,設計人員必須對於他設計的模塊應該對哪種變化封閉作出選擇。他必須先推測出最有可能發生變化的種類,然後

構造抽象隔離哪些變化。

? ? 小編寄語:我們在做不論什麽系統的時候。都不要指望系統會一開始需求確定,就再也不會變化。這是不現實的也是

不科學的想法。通過開放—封閉原則能夠對需求的改變保持相對穩定,從而使得系統在第一個版本號以後不斷推出新的

版本號。開放—封閉原則是面向對象設計的核心所在、遵循這個原則能夠帶來面向對象技術所聲稱的巨大優點(可維

護、可擴展、可復用、靈活性好)。開發者應該僅對程序在呈現出頻繁變化的部分作出抽象,然而,對於程序中的

每一個部分都刻意地進行抽象相同不是一個抽象。

依賴倒轉原則(Dependence?Inversion?Principle)

?????A.高層模塊不應該依賴低層模塊。B.抽象不應該依賴細節。

說白了就是要針對接口編程,不要針對實現編程。

遵循依賴倒轉原則的優點?

????通過面向接口編程,無論是高層模塊還是低層模塊。僅僅要有穩定的接口,那麽不論什麽一個更改都不用操心其它受到

影響。無論是高層模塊還是低層模塊都能夠非常easy地被復用。

? ? 小者寄語:依賴倒轉原則事實上能夠說是面向對象的標準,用哪種語言來編敲代碼不重要,假設編寫時考慮的都是

怎樣針對抽象編程而不是針對細節編程,即程序中全部的依賴關系都是終止於抽象類或者接口,那就是面向對象的設

計。反之那就是程序化設計了。



技術分享圖片

設計模式6大基本原則之(一)