原則是指基本事實或主張,是信仰體系,行為準則或推理的基礎。
提起物件導向設計(ood)的設計原則,大家立刻就能想到最基本的5大設計原則。我們首先看一下最基本的5大設計原則。
1)單一職責原則
類的每個關注點都是乙個變化軸。乙個類最好只有乙個關注點,只有乙個能導致它發生變化的原因。
2)開閉原則(ocp)
類的設計應該對擴充套件開放,對修改封閉。對於新的需求,能夠在不影響其他**的情況下進行擴充套件;只有在修改bug的情況下對原有**進行修改。(我的理解是:在對原有**進行修改的時候,不能對其他**造成影響。)開閉原則的核心思想就是要針對介面程式設計,而不是針對具體類程式設計。
3)依賴倒轉原則(dip)
人正常的思維過程是從具體的物件中提取出抽象,也就是說抽象是依賴於具體物件的。這個原則的核心就是要倒轉這個依賴關係,使具體要依賴於抽象。高層模組不應該依賴於底層模組,兩者要同時依賴於抽象。
4)介面隔離原則(isp)
介面應該是內聚的,不要建立乙個大而全的介面,而是要使用多個小而專的介面。不能強迫客戶依賴他使用不到的方法。
5)黎克特制代換原則(lsp)
必須能夠通過父類介面使用子類,而客戶並不知道這種差別。**中所有使用父類的地方,都可以用子類代替。子型別至少提供父型別承諾的行為。
在5大設計原則之外,還有乙個重要的設計原則——迪公尺特法則。迪公尺特法則也被人們稱為第6大設計原則。
6)迪公尺特法則
又被稱作最少知道原則。乙個物件應該對被依賴的物件保持最少的了解,只和直接朋友進行通訊。
除了上面的6大設計原則之外,我們在物件導向的設計過程中,也會自覺或不自覺的用到下面的這些設計原則。
7)抽象原則
通過精簡和概括來簡化實體。精簡指刪除不必要的部分,概括指找出並定義重要的通用特性。
8)封裝原則
封裝原則提倡一種資訊隱藏方式,通過隱藏抽象的實現細節和隱藏可能發生的變化兩種形式,來實現關注點分離和資訊隱藏。封裝原則又可以劃分為資訊隱藏原則和變化封裝原則。
9)模組化原則
倡導通過集中(資料和操作集中在乙個物件中)和分解(將大的抽象分解成規模適中的抽象)等方法建立高內聚和低耦合的抽象。
10)層次結構原則
倡導通過使用分類,歸併(抽出子類中的共性),替換(遵循lsp原則),排序等手法以層次方式組織抽象。
11)非迴圈依賴原則(adp)
該原則指出,包之間的依賴關係不能存在迴圈。同樣,類之間的依賴也不能存在迴圈。
12)不自我複製原則(dry)
該原則指出,對於每乙個知識點,系統中只能有乙個明確而權威的表示。在物件導向的設計中,重複可能表現為類名重複和**實現重複。
13)保持簡單原則(kiss)
簡潔是軟體設計的重要目標,避免引入不必要的複雜。保持軟體設計簡單的方式有兩種:一種是讓它簡單到沒有缺陷,另外一種是複雜到沒有顯而易見的缺陷。
物件之間如果存在依賴關係的話,盡量使用合成/聚合,而不要使用繼承來表達這種依賴關係。因為使用繼承會導致物件之間的強耦合。
常用的軟體設計原則 DRY
架構設計必須遵循一些原則,這個原則是經過很多年先輩們的總結,好的架構,必須先了解好的軟體設計原則,遵循這些原則可以做出更好的架構。今天首先討論dry don t repeat yourself dry 也被稱之為die,複製即是魔鬼,在我們軟體開發過程中,會經常遇到這個問題,copy paste。d...
軟體設計原則
開閉原則 ocp 軟體設計的最大原則 這個原則說的是 對擴充套件開放,對修改關閉。其實意思是說,給系統新增新的功能,但不修改原有 如果能做到呢,關鍵在於抽象化,也就是封裝變化,抽象層不變,讓具體實現依賴抽象隨需求變化。使得系統具有很強的擴充套件性和可維護性。黎克特制代換原則 任何基類可以出現的地方,...
軟體設計原則
高內聚 低耦合 乙個軟體系統要有乙個穩定的架構,不會隨需求的改變而發生巨大的變動。因此,高內聚 低耦合是乙個軟體系統設計中必須遵循的基本原則 面向抽象程式設計 在面向過程的軟體開發中,上層元件呼叫下層元件,就意味著上層元件依賴於下層元件,當下層元件發生劇烈變化時,上層元件也要跟著一起發生變動,這將導...