設計模式 物件導向設計七大原則

2022-09-14 20:39:22 字數 2205 閱讀 3316

單一職責原則:   類的職責要單一,不要將太多的職責放在乙個類中

開閉原則:    軟體實體對擴充套件是開放的,但對於修改是關閉的,即在不修改乙個軟體實體的基礎上去擴充套件其功能

黎克特制代換原則:  在軟體系統中,乙個可以接受基類物件的地方必然可以接受乙個子類物件

依賴倒轉原則:  要對抽象層程式設計,不要針對具體類程式設計

介面隔離原則:  要使用多個專門的介面,不要使用同意的介面

合成復用原則:  在系統中要盡量使用組合和聚合關聯模式,少使用甚至不使用繼承關係

迪公尺特法則:   乙個軟體實體對其他實體的引用越少越好

1.單一職責原則

定義:乙個物件應只包含單一職責

,並且職責被完整的封裝在乙個類中.

分析:類的職責有兩個方面:資料職責

,行為職責

,資料職責由屬性體現,行為職責有方法體現.乙個職責可能影響其他職責,因此要將職責分離,封裝到不同類中.

單一職責原則是實現"高內聚,低耦合"的指導方針

.2.開閉原則

定義:

乙個軟體實體應當對擴充套件開放,對修改關閉

.分析:

開閉原則是物件導向可復用性設計的一塊基石,抽象化設計是開閉原則的關鍵.

開閉原則注重的是無需對抽象層進行改動,只需要增加新的具體類

來實現新的業務.

開閉原則可以通過"對可變性封裝原則"來描述,即找到系統的可變因素將其封裝起來.

百分百的開閉原則是很難做到的

.3.黎克特制代換原則

定義:所有引用基類

的地方,必須能透明的使用其子類

的物件.

分析:黎克特制代換原則是實現開閉原則的重要方式

軟體中能使用基類物件的地方一定能使用其子類物件,反之不成立.

要盡量使用基類型別對物件定義

,執行時在確定其子類型別

,用子類替換父類.

子類的所有方法必須在父類中宣告,子類必須實現父類中宣告的所有方法

盡量把父類設計為抽象類或介面

,讓子類繼承或實現父類.

4.依賴倒轉原則

定義:

高層模組不應該依賴於底層模組,他們都應該依賴於抽象

,抽象不應該依賴於細節,細節應該依賴於抽象

即要針對介面程式設計

,不要針對實現程式設計

分析:**要依賴於抽象類,不要依賴於具體類,要針對介面或抽象類程式設計,而不是針對具體類程式設計.

開閉原則是物件導向設計的目標,依賴倒轉原則是物件導向設計的主要手段

依賴倒轉原則是spring等技術和框架後的基本原則之一

類之間的耦合:

(1)零耦合:兩個類沒有任何耦合關係

(2)具體耦合:發生在兩個具體類中,有乙個具體類對另乙個具體類的例項的直接引用產生.

(3)抽象耦合:發生在乙個具體類和乙個抽象類(也可以兩個抽象類)中,由於抽象耦合中至少有乙個是抽象的所以可以通過不同的實現進行擴充套件

.依賴倒轉原則就是要求客戶端依賴於抽象耦合,這是依賴倒轉原則的關鍵

.5.介面隔離原則

定義:客戶端不能依賴那些它不需要的介面

分析:要使用多個專門的介面

,而不要使用單一的總介面

拆分介面時,要符合單一職責原則

,介面中的方法越少越好

6.合成復用原則

定義:

要盡量使用物件組合,而不是繼承來達到復用的目的

分析:通過繼承來實現復用很簡單,而且子類可以覆蓋父類方法,易於擴充套件.但是繼承復用會破壞系統的封裝性,會將實現的細節暴露給子類

.通過組合/聚合來復用,是將乙個類的物件作為另乙個類的物件的一部分,成員物件的內部細節對於新物件是不可見的,耦合度相對較低.

從基類繼承來的實現時靜態的,而合成服用可以在執行時動態的進行,新物件可以動態的引用與成員物件型別相同的其他物件.

7.迪公尺特法則

定義:

乙個軟體實體應當盡可能少的與其他實體發生相互作用

分析:如何兩個類之間不必彼此直接通訊,那麼這裡兩個類就不應當發生直接相互作用,可以通過第三者**這個呼叫.

簡單來說,不要和"陌生人"說話,要和你的直接"朋友"通訊

物件導向設計七大原則

物件導向七大設計原則 1 開閉原則 2 黎克特制替換原則 3 單一職責原則 4 介面隔離原則 5 依賴倒置原則 6 迪公尺特原則 7 組合 聚合復用原則 原則一 srp single responsibility principle 單一職責原則又稱單一功能原則 核心 解耦和增強內聚性 高內聚,低耦...

物件導向設計七大原則

嗯哼?其實對於這7大原則我也一臉懵,設計模式基本上就是在這幾個原則裡面做選擇,一種模式可能很好的滿足了一種原則,但對於其他原則可能就不能很好的滿足。背下來,老師如是說。恩,感覺在設計類的時候會下意識往這上面想,怎麼設計父類?介面還是抽象類?是包含引用還是依賴關係?還是比較有趣的,在幾種選擇裡面做平衡...

設計模式七大原則

open closed principle ocp 最基礎的原則,對擴充套件開放,對修改關閉強調的是用抽象構建框架,用實現擴充套件細節,可以提高軟體系統的可復用性和可維護性 dependence inversion principle,dip 程式要依賴於抽象介面,不要依賴於具體實現。即面向介面程式...