單一職責原則,開 閉原則,依賴倒置原則

2022-10-11 17:03:11 字數 1465 閱讀 5958

單一職責原則(****** response principle):就乙個類而言,應該僅有乙個引起他變化的原因。

當乙個類承擔了過多的職責,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其它職責的能力。這種耦合會導致脆弱的設計,當設計變化時,設計會遭受到意想不到的破壞。

軟體設計真正要做的事,就是發現職責,並把這些職責相互分離。

判斷是否職責單一的方法:如果你想到多於乙個動機去改變乙個類,這個類就具有多於乙個的職責,就應該對類進行職責分離。

開放-封閉原則:軟體實體(類,模組,函式等),應該可以擴充套件,但不可修改。

即:對於擴充套件是開放的(open for extension),對於更改是封閉的(closed for modification)。

乙個較好的實踐方式是等到變化發生時立即採取行動。在我們最初編寫**時,假設變化不會發生。當變化發生時,我們就建立抽象來隔離以後發生的同類變化。

依賴倒轉原則:抽象不應依賴於細節,細節應該依賴於抽象。

高層模組不應依賴於底層模組==高層不應依賴呼叫低層模組,我的理解是高層依賴於低層的介面,這樣能做到高層類的復用。

黎克特制代換原則:子類別必須能夠替換掉他的父類別。

即:把父類都替換為他的子類,程式的行為沒有變化。

只有當子類可以替換掉父類,軟體單位的功能不受影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。

程式所有的依賴關係都終止於抽象類或介面,那就是物件導向設計,反之就是過程化設計。

單一職責原則(****** response principle):就乙個類而言,應該僅有乙個引起他變化的原因。

當乙個類承擔了過多的職責,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其它職責的能力。這種耦合會導致脆弱的設計,當設計變化時,設計會遭受到意想不到的破壞。

軟體設計真正要做的事,就是發現職責,並把這些職責相互分離。

判斷是否職責單一的方法:如果你想到多於乙個動機去改變乙個類,這個類就具有多於乙個的職責,就應該對類進行職責分離。

開放-封閉原則:軟體實體(類,模組,函式等),應該可以擴充套件,但不可修改。

即:對於擴充套件是開放的(open for extension),對於更改是封閉的(closed for modification)。

乙個較好的實踐方式是等到變化發生時立即採取行動。在我們最初編寫**時,假設變化不會發生。當變化發生時,我們就建立抽象來隔離以後發生的同類變化。

依賴倒轉原則:抽象不應依賴於細節,細節應該依賴於抽象。

高層模組不應依賴於底層模組==高層不應依賴呼叫低層模組,我的理解是高層依賴於低層的介面,這樣能做到高層類的復用。

黎克特制代換原則:子類別必須能夠替換掉他的父類別。

即:把父類都替換為他的子類,程式的行為沒有變化。

只有當子類可以替換掉父類,軟體單位的功能不受影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。

程式所有的依賴關係都終止於抽象類或介面,那就是物件導向設計,反之就是過程化設計。

設計模式 單一職責原則和開 閉原則

單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意向不到的破壞。比如說俄羅斯方塊遊戲,考慮哪些是介面,哪些是邏輯,然後封裝成不同...

依賴倒置原則 物件導向設計原則之依賴倒置原則

依賴倒置原則的定義 依賴倒置原則 dependence inversion principle,dip 是 object mentor 公司總裁羅伯特 馬丁 robert c.martin 於 1996 年在 c report 上發表的文章。依賴倒置原則的原始定義為 高層模組不應該依賴低層模組,兩者...

單一職責原則

定義 不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。問題由來 類t負責兩個不同的職責 職責p1,職責p2。當由於職責p1需求發生改變而需要修改類t時,有可能會導致原本執行正常的職責p2功能發生故障。解決方案 遵循單一職責原則。分別建立兩個類t1 t2,使t1完成職責p1功能,t...