幾個設計原則

2021-08-25 21:17:32 字數 1086 閱讀 1876

如果乙個類承擔的 職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭 受到意想不到的破壞。軟體設計真正要做的許多內容,就是發現職責並把那些職責相互分離。如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於 乙個的職責。

開放-封閉原則:軟體實體(類,模組,函式等等)應該可以擴充套件,但是不可修改。 即「對於擴充套件是開放的(open for extension)」,而「對於更改是封閉的(closed for modification)」。這些的設計才能面對需求的改變卻可以保持相對穩定,從而使得系統可以在第乙個版本以後不斷推出新的版本。

無論模組 多麼的「封閉」,都會存在一些無法對之封閉的變化。既然不可能完全封閉,設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇,他必須先猜測出最有可 能發生的變化種類,然後構造抽象來隔離那些變化。我們很難預先猜測,但我們卻可以在發生小變化時就及早去想辦法應付發生更大變化的可能,也就是說等到變化 發生時立即採取行動。當變化發生時,我們就建立抽象來隔離以後發生的同類變化。面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。

依賴倒轉原則:高層模組不應該依賴底層模組,兩個都應該依賴抽象。抽象不應該依賴細節,細節應該依賴於抽象,即針對介面程式設計,不要針對實現程式設計。

黎克特制代換原則:一 個軟體實體如果使用的是乙個父類的話,那麼一定適用於其子類,而且它察覺不出父類物件和子類物件的區別。也就是說,在軟體裡面,把父類都替換成它的子類, 程式的行為沒有變化。簡單的說,子型別必須能夠替換掉他們的父型別。正因為有了這個原則,使得繼承復用成為了可能,只有當子類可以替換掉父類,軟體單位的 功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。由於子型別的可替換性才使得父類型別的模組在無需修改的情況下就可以擴 展。

依賴倒轉就是誰也不要依靠誰,除了約定的介面,大家都可以靈活自如。

依賴倒轉其實可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之那就是過程化的設計了。

幾個設計原則

如果乙個類承擔的 職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭 受到意想不到的破壞。軟體設計真正要做的許多內容,就是發現職責並把那些職責相互分離。如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就...

設計的時候幾個原則

1.簡單的設計永遠比複雜的好,原子性的操作要勝於某些貌似更加自動化的機制。2.我們真的很在乎一些細緻末節的效率麼?尤其是在假意效率之名破壞簡單清晰的設計時請仔細斟酌是否值得。3.比起c 過載某些 之類的方法,我寧願去寫add,mul,div這樣的函式,至少可以讓使用者 或者自己 一目了然的知道這背後...

幾個基本的設計原則

物件導向的分析設計有很多原則,這些原則從思想層面上給我們指出分析設計的正確方向。而設計模式就是這些設計原則的一些具體體現,它是針對某個場景下某些問題的某個解決方案。乙個類應該僅有乙個引起它變化的原因 即它只有乙個職責 開閉原則 軟體實體應當對擴充套件開放,對修改關閉。黎克特制代換原則 任何基類可以出...