設計原則與軟體設計

2021-09-08 02:42:04 字數 2010 閱讀 9894

眾所周知,設計原則是設計模式的基石。當遵循設計原則的時候,寫出的**就會變得非常靈活,並且可以應對變化,也更加容易維護。當然,也不是那麼絕對。下面首先會簡要介紹一些基本的設計原則,然後再介紹robert c. martin的s.o.l.i.d原則。

1 設計原則簡述

kiss原則(keep it ****** stupid)

軟體開發中常常遇到的問題就是:把乙個問題過度的複雜化。kiss原則的目的就是提倡在設計和編碼中,盡量保持**的簡約,避免不必要的複雜。簡約不等於簡單。

dry原則(don』t repeat yourself)

dry原則的目的就是:抽取系統中的公共部分,並把它放置在乙個地方以避免重複。這個原則不只是適用於**中,而且也可以用於功能和業務邏輯上,確保不重複。這就要求對系統的職能有良好的分割,每個功能之間有著清晰的界限,用例之間不存在交叉。

tell,don』task

這個原則是與封裝有關的,要求對**進行合理的封裝,並把它們放到正確的類中。同時這個原則也指出:必須明確告訴物件:我們想要它們去執行什麼樣的操作,而不是首先詢問物件的狀態,然後我們自己決定去執行什麼操作。

yagni原則(you ain』tgonna need it)

yagni原則指出:系統中只包含所必須的功能,不要包含你認為將來可能會用到的功能或者特性,防止過度設計。這個原則在tdd中體現得比較完全。在tdd中,首先寫出代表系統必須功能的測試用例,然後再實現系統的功能**,然後進行測試,直至測試**通過。

soc原則(separation of concerns)

soc就是把乙個軟體功能分離為單獨功能點。被分離的每個功能點有唯一的行為和資料,而且每個功能點都能夠被其他所需要的類單獨使用。通過這個原則,我們可以最大限度地實現**重用、功能重用、模組重用。

講述了一些基本的設計原則之後,再來看看bob在《敏捷軟體開發設計》[1]一書中提到的五個原則,簡稱s.o.l.i.d原則。

s.o.l.i.d原則融合了基本的原則,並且提出了更加具有可操作性的方法。

srp(single responsibility principle )

單一職責原則:就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責都耦合在一起了。乙個職責的變化可能會削弱或抑制這個類完成其他職責的能力。這個原則,不僅僅適用於類的設計上,還適用於介面以及模組的設計上。

ocp(open-closed principle)

開放-封閉原則:軟體實體(類,模組等)應該是可以擴充套件的,但是不可修改。只有在設計和開發中遵守ocp原則,才能避免在新加功能之後產生連鎖反應。ocp關注的是靈活性:功能的改動是通過增加**進行的,而不是修改現有的**。一般來說,ocp是通過融合isp(介面分離原則)和建立抽象來隔離後面同型別的變化的,lsp(黎克特制替換原則)使得這個目標成為可能。

lsp(liskov substitution principle)

黎克特制替換原則:子型別必須能夠替換掉它們的基型別。

isp(inte***ce segregation principle)

介面分離原則:不應該強迫類實現它不需要的方法。如果乙個介面中包含了很多不大而且不相關的方法,那麼這個介面就必須要被分組,然後分離成多個介面,讓實現介面的類只是去實現它所需要的方法。同時這也體現了在設計中,要盡量遵從srp(單一職責原則)。

dip(dependency inversion principle)

依賴倒置原則:高層的模組不應該依賴於低層的模組,二者都應該依賴於抽象;抽象不應該依賴於細節,細節應該依賴於抽象。高層模組是指系統不經常發生變化的部分,是乙個系統區別於其他系統的重要標誌,它包含了系統的策略選擇與業務模型。低層模組是指系統中經常發生變化的部分。

軟體設計原則

開閉原則 ocp 軟體設計的最大原則 這個原則說的是 對擴充套件開放,對修改關閉。其實意思是說,給系統新增新的功能,但不修改原有 如果能做到呢,關鍵在於抽象化,也就是封裝變化,抽象層不變,讓具體實現依賴抽象隨需求變化。使得系統具有很強的擴充套件性和可維護性。黎克特制代換原則 任何基類可以出現的地方,...

軟體設計原則

高內聚 低耦合 乙個軟體系統要有乙個穩定的架構,不會隨需求的改變而發生巨大的變動。因此,高內聚 低耦合是乙個軟體系統設計中必須遵循的基本原則 面向抽象程式設計 在面向過程的軟體開發中,上層元件呼叫下層元件,就意味著上層元件依賴於下層元件,當下層元件發生劇烈變化時,上層元件也要跟著一起發生變動,這將導...

軟體設計原則

軟體開發中有以下一些基本原則,深刻掌握這些原則比掌握一門技術要重要。1.開閉原則 open closed principle,ocp 乙個軟體應當對擴充套件開放,對修改關閉。也就是說我們在設計軟體時,應當可以在不必修改源 的情況下改變 擴充套件 其行為。開閉原則是非常重要的設計原則,其它的設計原則實...