物件導向七大設計原則

2021-10-05 06:24:42 字數 1681 閱讀 8478

乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。用抽象構建框架,用實現擴充套件細節。

提高軟體系統的可復用性及可維護性。

高層模組不應該依賴底層模組,二者都應該依賴其抽象

抽象不應該依賴細節;細節應該依賴抽象

針對介面程式設計,不要針對實現程式設計

應用層:高層

應用層的呼叫依賴低層的實現。

spring的依賴注入就是使用依賴倒置原則實現。

可以減少類之間的耦合性、提高系統穩定性,提高**可讀性和可維護性,可降低修改程式造成的風險。

不要存在多餘乙個導致類變更的原因

乙個類、介面、方法只負責一項職責

降低類的複雜度

提高類的可讀性

提高系統的可維護性

降低變更引起的風險

用多個專門的介面,而不是使用單一的總介面

客戶端不應該依賴它它不需要的介面

乙個類對應乙個類的依賴應該建立在最小的介面上

建立單一介面,不要建立龐大臃腫的解耦

盡量細化介面,介面中的方法盡量少

注意適度原則,一定要適度

符合我們常說的高內聚、低耦合的設計思想

從而使得類具有很好的可讀性,可擴充套件性和可維護性

乙個物件應該對其他物件保持最少的了解,又叫最少知道原則

盡量降低類與類之間的耦合

強調只和朋友類交流,不和陌生人說話

**朋友類:**出現在成員變數、方法的輸入、輸出引數中的類成為成員朋友類;而出現在方法體內部的類不屬於朋友類。

降低類與類之間的耦合

​ 如果對每乙個型別為t1的物件o1,都有型別為t2的物件o2,使得以t1定義的所有程式p在所有的物件o1都替換成o2時,程式p的行為沒有發生變化,那麼型別t2是型別t1的子型別。

​ 乙個軟體實體如果適用乙個父類的話,那一定適用於其子類,所有引用父類的額地方必須能透明的使用其子類的物件,子類物件能夠替換父類物件,而程式邏輯不變。

**引申意義:**子類可以擴充套件父類的功能,但不能改變父類原有的功能。

**含義1:**子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。

**含義2:**子類中可以增加自己特有的方法。

**含義3:**當子類的方法過載父類的方法時,方法的前置條件(即方法的輸入、入參)要比父類犯法的輸入引數更加寬鬆。

**含義4:**當子類的方法實現父類的方法時(重寫、過載或實現抽象方法),方法的後置條件(即方法的輸出,返回值)要比父類更加嚴格或相等。

約束繼承氾濫,開閉原則的一種體現;

加強程式的健壯性,同事變更時也可以做到非常好的相容性提高程式的維護性,擴充套件性。降低需求變更時引入的風險。

又叫組合、聚合復用原則

盡量使用物件組合、聚合、而不是繼承關係達到軟體復用的目的

聚合has-a 和組合contains-a

可以是系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較少。

這 7 種設計原則是軟體[設計模式]必須盡量遵循的原則,各種原則要求的側重點不同。其中,開閉原則是總綱,它告訴我們要對擴充套件開放,對修改關閉;黎克特制替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向介面程式設計;單一職責原則告訴我們實現類要職責單一;介面隔離原則告訴我們在設計介面的時候要精簡單一;迪公尺特法則告訴我們要降低耦合度;合成復用原則告訴我們要優先使用組合或者聚合關係復用,少用繼承關係復用。

物件導向七大設計原則

1 開閉原則 ocp open closed principle 核心 對擴充套件開放,對修改關閉。即在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。根據開閉原則,在設計乙個軟體系統模組 類,方法 的時候,應該可以在不修改原有的模組 修改關閉 的基礎上,能擴充套件其功能 擴充套...

七大物件導向設計原則

迪公尺特法則又稱為最少知道法則,當類與類之間的關係越來越密切時,耦合度也隨之增大,改動其中的乙個類就會出現其他類也需要改動的問題,牽一髮而動全身,這種高耦合的現象顯然並不適用於我們物件導向的程式設計,不僅不利於清晰業務的完成,還大大增加了程式設計師維護的難度,因此,1987年美國northeaste...

物件導向的七大設計原則

1 單一職責原則 single responsibility principle 單一職責原則想表達的核心思想就是 高內聚 乙個模組只完成一項功能。在物件導向設計中,乙個類只應該負責一項職責,如果同時承擔太多職責,就等於把這些職責耦合在了一起。2 黎克特制替換原則 liskov substituti...