設計的流行趨勢轉瞬即逝,但是設計原則確是永恆的,以下則是我們程式設計的七大設計原則:
1. 開-閉原則(open-closed principle, ocp)
乙個軟體實體應當對擴充套件開發,對修改關閉.說的是,再設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件.換言之,應當可以在不必修改源**的情況下改變這個模組的行為,在保持系統一定穩定性的基礎上,對系統進行擴充套件。這是物件導向設計(ood)的基石,也是最重要的原則。
2.黎克特制代換原則(liskov substitution principle,常縮寫為.lsp)
1. 黎克特制代換原則(liskovsubstitution principle,簡稱lsp)說的是:乙個軟體實體如果使用的是乙個基類的話,那麼一定適用於其子類,而且它根本不能夠察覺出基類物件和子類物件的區別。也就是說,在軟體實體裡面,把父類都換成其子類,程式的行為是不會發生變化的。
2. 黎克特制代換原則(lsp):子型別必須能替換掉它的父型別,反過來代換原則不成立。
3. 黎克特制代換原則是繼承復用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不會受到影響的時候,基類才能真正被復用,而衍生類也才能夠在基類的基礎上新增新的行為。
依賴倒置原則
所謂依賴倒置原則(dependence inversion principle )就是要依賴於抽象,不要依賴於具體。簡單的說就是對抽象進行程式設計,不要對實現進行程式設計,這樣就降低了客戶與實現模組間的耦合
定義如下:
高層模組不應該依賴低層模組,兩者都應該依賴於抽象(抽象類或介面)
抽象(抽象類或介面)不應該依賴於細節(具體實現類)
細節(具體實現類)應該依賴抽象
介面隔離原則(inte***ce segregation principle, isp)
乙個類對另外乙個類的依賴是建立在最小的介面上
使用多個專門的介面比使用單一的總介面要好.根據客戶需要的不同,而為不同的客戶端提供不同的服務是一種應當得到鼓勵的做法.就像」看人下菜碟」一樣,要看客人是誰,再提供不同檔次的飯菜
胖介面會導致他們的客戶程式之間產生不正常的並且有害的耦合關係.當乙個客戶程式要求該胖介面進行乙個改動時,會影響到所有其他的客戶程式.因此客戶程式應該僅僅依賴他們實際需要呼叫的方法
合成/聚合復用原則(composite/aggregate reuse principle,carp)
在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過這些向物件的委派達到復用已有功能的目的.這個設計原則有另乙個簡短的表述:要盡量使用合成/聚合,盡量不要使用繼承.
迪公尺特法則(law of demeter lod)又叫做最少知識原則(least knowledge principle,lkp)
就是說,乙個物件應當對其他物件有盡可能少的了了解.
迪公尺特法則最初是用來作為物件導向的系統設計風格的一種法則,與2023年秋天由ian holland在美國東北大學為乙個叫做迪公尺特(demeter)的專案設計提出的,因此叫做迪公尺特法則[lieb89][lieb86].這條法則實際上是很多著名系統,比如火星登陸軟體系統,木星的歐羅巴衛星軌道飛船的軟體系統的指導設計原則.
沒有任何乙個其他的oo設計原則象迪公尺特法則這樣有如此之多的表述方式,如下幾種:
只與你直接的朋友們通訊(only talk to your immediate friends).
不要跟」陌生人」說話(don』t talk to strangers).
每乙個軟體單位對其他的單位都只有最少的知識,而且侷限於那些本單位密切相關的軟體單位.
就是說,如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用,如果其中的乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫.
單一職責原則(****** responsibility pinciple srp)
就乙個類而言,應該僅有乙個引起它變化的原因,如果你能想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責.應該把多於的指責分離出去,分別再建立一些類來完成每乙個職責.
軟體設計原則
開閉原則 ocp 軟體設計的最大原則 這個原則說的是 對擴充套件開放,對修改關閉。其實意思是說,給系統新增新的功能,但不修改原有 如果能做到呢,關鍵在於抽象化,也就是封裝變化,抽象層不變,讓具體實現依賴抽象隨需求變化。使得系統具有很強的擴充套件性和可維護性。黎克特制代換原則 任何基類可以出現的地方,...
軟體設計原則
高內聚 低耦合 乙個軟體系統要有乙個穩定的架構,不會隨需求的改變而發生巨大的變動。因此,高內聚 低耦合是乙個軟體系統設計中必須遵循的基本原則 面向抽象程式設計 在面向過程的軟體開發中,上層元件呼叫下層元件,就意味著上層元件依賴於下層元件,當下層元件發生劇烈變化時,上層元件也要跟著一起發生變動,這將導...
軟體設計原則
軟體開發中有以下一些基本原則,深刻掌握這些原則比掌握一門技術要重要。1.開閉原則 open closed principle,ocp 乙個軟體應當對擴充套件開放,對修改關閉。也就是說我們在設計軟體時,應當可以在不必修改源 的情況下改變 擴充套件 其行為。開閉原則是非常重要的設計原則,其它的設計原則實...