設計原則總共有六個,分別是單一職責原則,開閉原則,依賴倒轉,黎克特制替換,介面隔離,迪公尺特。
如果乙個類承擔的職責過多,就等於把這些職責耦合在一起了。乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。而如果想要避免這種現象的發生,就要盡可能的遵守單一職責原則。此原則的核心就是解耦和增強內聚性。 將不同的職責分離設計開發
就乙個類而言,應該僅有乙個引起他變化的原因 單一職責原則 在實際開發中經常用到,可以說是乙個比較重要的原則
定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。
開放 : 對於擴充套件時開放的
封閉 : 對於更改時封閉的
軟體實體(類,模組,函式)應該是可擴充套件的,但是不可修改的
任何的改變都不需要修改原有的**,而只需要加入一些新的實現,就可以達到目的,這是系統設計的理想境界,但是沒有任何乙個系統可以做到這一點。
開閉原則的關鍵在與抽象和多型,二支援抽象和多型關鍵機制之一時繼承 但是不是所有的部分都進行抽象 ,而是對頻繁發生變化的部分作出抽象 拒絕不成熟的抽象
用抽象構建框架,用細節實現擴充套件
抽象不應該依賴細節,細節應該依賴於物件。。 要針對介面程式設計,不要對實現程式設計
a 高層模組不應該依賴低層模組,兩個都應該依賴抽象
b:抽象不應該依賴細節,細節應該依賴抽象
低層模組盡量都要有抽象類或介面,或者兩者都有。
變數的宣告型別盡量是抽象類或介面。
使用繼承時遵循黎克特制替換原則。
依賴倒置原則的核心就是要我們面向介面程式設計,理解了面向介面程式設計,也就理解了依賴倒置。在開發中面向介面程式設計是經常使用到的。
黎克特制替換原則通俗的來講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能。 它包含以下4層含義:
子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。
子類中可以增加自己特有的方法。
當子類的方法過載父類的方法時,方法的前置條件(即方法的形參)要比父類方法的輸入引數更寬鬆。
當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。
介面最小化原則,強調的是乙個介面擁有的行為應該盡可能的小。
介面隔離原則的含義是:建立單一介面,不要建立龐大臃腫的介面,盡量細化介面,介面中的方法盡量少
採用介面隔離原則對介面進行約束時,要注意以下幾點
介面盡量小,但不能太小。對介面進行細化可以提高程式設計靈活性是不掙的事實,但是如果過小,則會造成介面數量過多,使設計複雜化。所以一定要適度。
為依賴介面的類定**務,只暴露給呼叫的類它需要的方法,它不需要的方法則隱藏起來。只有專注地為乙個模組提供定**務,才能建立最小的依賴關係。
提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情。
定義:乙個物件應該對其他物件保持最少的了解。
最小知道原則,即乙個類應該盡量不要知道其他類太多的東西,不要和陌生的類有太多接觸。
如果乙個類知道或者說是依賴於另外乙個類太多細節,這樣會導致耦合度過高,應該將細節全部高內聚於類的內部,其他的類只需要知道這個類主要提供的功能即可。
盡可能將乙個類的細節全部寫在這個類的內部,不要漏出來給其他類知道,否則其他類就很容易會依賴於這些細節,這樣類之間的耦合度就會急速上公升,這樣做的後果往往是乙個類隨便改點東西,依賴於它的類全部都要改。
設計原則之美學習筆記 設計原則
乙個類只負責完成乙個職責或者功能。不要設計大而全的類,要設計粒度小 功能單一的類。單一職責原則是為了實現 高內聚 低耦合,提高 的復用性 可讀性 可維護性。不同的應用場景 不同階段的需求背景 不同的業務層面,對同乙個類的職責是否單一,可能會有不同的判定結果。實際上,一些側面的判斷指標更具有指導意義和...
SOLID設計原則筆記
如何寫出高質量的 是大家一直都在被拷問的難題。通常,軟體開發的最佳實踐都提倡 高內聚 低耦合 比如,在軟體的設計和開發過程中,應盡量做到,軟體各實體 如模組 類 函式等 的責任有清晰地定義和劃分,並盡量避免軟體實體之間的耦合,從而降低 的複雜度。solid是一系列軟體設計 開發的原則,是設計 開發出...
設計模式筆記(一) 設計原則
類 物件之間的關係 generalization 泛化 dependency 依賴 association 關聯 aggregation 聚合 composition 組合 合成 泛化 表示類之間是is a關係,如類a繼承了b類或實現了b介面,子類會繼承父類的屬性和方法。依賴 表示類之間是use a...