設計模式中的原則

2021-09-17 20:24:02 字數 1223 閱讀 6386

近階段在研讀設計模式,設計模式中最重要的一部分就是設計原則,單獨將這一部分拿出來深入**和研究

0、開閉原則

修改關閉,拓展開放。

當程式需要變化滿足新需求的時,盡量不要在原有基礎上修改,而是拓展程式;便於程式的維護、拓展和公升級;使用介面和抽象類可以滿足這樣的需求。

1、單一職責原則

每個類應該實現單一的原則。

如果類包含了多個功能職責,就應該把類進行拆分,避免出現因某乙個功能需要修改導致整個類變更情況。我們希望改動的地方影響範圍越小越好。

2、裡式替換原則(liskov substitution principle lsp)

任意的基類都可以由他的子類來替換。

只有當子類替換基類,且功能不受影響的時候,在子類中可以任意拓展新的行為。基類是與外界進行直接交流的,子類最好不要修改基類方法的結構和定義,因為一旦修改之後,外界可能無法使用。

3、依賴倒轉原則

面向介面程式設計,依賴於抽象而不依賴於具體。

在寫**的時候,盡量與介面或者抽象類進行互動,具體的實現放在子類中;即使有功能變更或者拓展,對使用介面的地方來說也是透明的、無感知的。

4、介面隔離原則(inte***ce segregation principle)

乙個類對另乙個類的依賴應建立在最小的原則之上。

不應該強迫子類實現他們不需要的方法,如果有,應該把介面進行拆分。多個功能介面合成乙個大的介面,不如單個介面單個功能。這裡就對應了上面的「單一職責原則」,不同方法混合的介面,是對介面的汙染。要保持最小介面。

5、最少知道原則(又叫迪公尺特法則 demeter principle)

只和直接朋友交談,不要和陌生人說話。(talk only to your immediate friends)

乙個類應該對其他的類盡可能少的了解。每個類盡可能減少對其他類的依賴,能夠降低類之間的耦合度,使類與類之間不存在或者存在很少的依賴關係。比如a和b認識,b和c認識,如果a想要和c通話,按照迪公尺特法則,應該由b來充當傳話筒,這樣就會有很多的非業務方法存在;或者建立乙個c的介面父類d,a與介面父類d通訊,不和具體實現c通訊;也減少了依賴關係。

6、合成復用原則

在乙個新的物件裡面使用已有物件,使之成為新物件的一部分,新物件通過老物件達到復用的原則。

盡量使用合成/聚合,不要使用繼承關係。將已有物件變成新物件的成員物件,新物件不需要知道老方法是如何實現和操作的,即使老物件進行了修改或者拓展也不會對新物件有所影響。新物件可以選擇性的使用老物件中的方法,靈活度較高,耦合度也低。

設計模式中的設計原則

最近在看 head first 設計模式 先一步一步總結點知識。設計原則 含義 開 閉 原則 ocp 軟體實體應當對擴充套件開放,對修改關閉,即軟體實體應當在不修改的前提下擴充套件。黎克特制代換原則 lsp 父類能出現的地方都可以替換為子類,但反之不一定。單一職責原則 srp 乙個類只負責一項職責。...

設計模式中的開閉原則

原則 乙個軟體實體對擴充套件開放,對修改關閉。如何做到開閉原則?開 閉 原則從另乙個角度講述,就是所謂的 對可變性的封裝原則 對可變性的封裝原則 講的是找到乙個系統的可變元素,將之封裝起來。總結 找到乙個系統的可變元素,將它封裝起來。黎克特制替換原則 原則 任何基類可以出現的地方,子類一定可以出現。...

設計模式中的相關原則

1.單一職責原則 單一職責原則 就乙個類而言,應該僅有乙個因其他變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,當乙個職責變化的可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。軟體設計真正要做的許多內容,就是發現職責並...