一:單一職責原則(the single responsibility principal)srp
就是說盡量的單一化類的功能,不要使類具有多個功能。
如果類具有多個功能時,任意乙個功能的修改都需要改寫這個類,也就會影響其他的類,而這些類根本沒有使用修改的這個功能。如果單一化功能,這種情況就可以避免。
例如對乙個足球聯賽,可以編寫兩個類,乙個類記錄球隊的比賽資訊,另乙個類來計算球隊的排名。
如果原先贏得兩分,平一分,輸零分,這時通過排名類計算了乙個排名。現在變成贏三分,我們只需要更改計算排名的類就可以得到新的排名,而不需要修改記錄球隊比賽資訊的類。
二:開放-封閉原則(the open-close principal) ocp
就是指如果有新需求,我們可以非常方便的新增到已有的程式中,但是新增時不能修改原先存在的功能**。
例如對於聯賽,可以有足球聯賽和籃球聯賽,它們的記分方法都不相同。我們可以有兩種方法來記分。
一種是在足球聯賽和籃球聯賽中設定乙個標誌位來說明聯賽型別。然後在記分類中判斷聯賽型別,然後進行不同的計算。
一種是建立兩個計算分數的類,乙個計算足球聯賽,乙個計算籃球聯賽。
對於第一種情況,如果現在有乙個排球聯賽需要計算排名,我們需要修改記分的方法類。不符合ocp原則。
但是對於第二種情況,如果需要計算排球聯賽的分數,我們只需要新增乙個新的記分類便可以。符合ocp原則。
三:liskov替換原則(the liskov substitution principal)lsp
是指如果類b繼承於類a,如果類c呼叫類a能夠產生期望的輸出,那麼呼叫類b也應當能產生期望的輸出。
例如對於足球聯賽來說,有降級的隊伍,盃賽也是一種足球聯賽,如果盃賽繼承了足球聯賽,就應當也能有降級的隊伍。但實際上,盃賽是沒有降級隊伍之說的。那麼另乙個類呼叫聯賽類能產生期望輸出,但是呼叫盃賽類就不能產生期望輸出了。違背了lsp原則。
四:依賴倒置原則(the dependency inversion principal)dip
指對於高層的類和物件來說不應當依賴於底層的物件,兩者都應當依賴於抽象的物件,並且細節都應當依賴於抽象的物件。
例如乙個遙控器類,如果它包含具體的電視機類,那麼這個遙控器只能控制電視機,不能控制空調什麼的。不符合dip原則。
但是我們把遙控器中控制部分抽象出來,電視機和空調都實現了這個控制器,遙控器也呼叫這個控制功能,那麼遙控器就能控制電視機和空調了,這樣就符合了dip原則。
五:介面隔離原則(the inte***ce segregation inte***ce)isp
其實這是單一職責原則的擴充套件。就是乙個類或介面只包含特定一組相關的功能。
敏捷開發原則
原則一 我們最先要做的是通過盡早的持續的交付,有價值的軟體來時客戶滿意,初期交付的系統中所包含的功能越少,最終交付的系統的質量就越高,交付的越頻繁,最終產品的質量就越高。原則二即使到了開發的後期也歡迎改變需求敏捷過程,利用變化來為客戶創造競爭優勢。原則三經常性的交付,可以工作的軟體交付的間隔可以從幾...
敏捷軟體開發 敏捷開發原則
編寫單元測試是一種驗證行為,更是一種設計行為。測試時乙個無價的文件。如果你想知道如何呼叫乙個函式或者建立乙個物件,會有乙個測試展示給你看。什麼是設計?不應該認為設計就是一組和 分離的uml圖。一組uml圖也許描繪了設計的一些部分,但是它不是設計。還是要 化 僵化性是指難以對軟體進行改動,即使是簡單的...
敏捷開發的設計原則
關於敏捷開發的設計原則 單一職責原則srp single responsibility principle 開放封閉原則ocp open close principle liskov替換原則lsp liskov substitution principle 依賴倒置原則dip dependency ...