七大設計原則

2021-10-09 20:16:46 字數 1406 閱讀 2065

開閉原則

定義:乙個軟體實體如類、模組和函式應該對擴充套件開放、對修改關閉

用抽象構建框架,用實現擴充套件細節

優點:提高軟體系統的可復用性及可維護性

依賴倒置原則

定義:高層模組不應該依賴低層模組,二者都應該依賴其抽象

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

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

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

單一職責原則

定義:不要存在多於乙個導致類變更的原因

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

優點:降低類的複雜度、提高類的可讀性,提高系統的可維護性、降低變更引起的風險

介面隔離原則

定義:用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴它不需要的介面

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

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

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

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

優點:符合常說的高內聚低耦合的設計思想,從而使得類具有很好的可讀性、可擴充套件性和可維護性

5.迪公尺特法則

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

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

優點:降低類之間的耦合

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

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

裡式替換原則

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

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

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

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

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

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

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

優點1:約束繼承氾濫,開閉原則的一種體現。

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

合成復用原則

定義:盡量使用物件組合/聚合,而不是繼承關係達到軟體復用的目的。

聚合 has-a,組合 contains-a 繼承 is-a

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

七大設計原則

開閉原則 open closed principle,ocp 是指乙個軟體實體如類 模組和函式應該對擴充套件開放,對修改關閉。強調的是用抽象構建框架,用實現擴充套件細節。可以提高軟體系統的可復用性及可維護性。開閉原則即是面向介面程式設計 開閉原則的實現方法 為了滿足開閉原則的對修改關閉原則以及擴充套...

七大設計原則

核心 解耦和增強內聚性 高內聚,低耦合 說明 就乙個類而言,應該只專注於做一件事和僅有乙個引起它變化的原因。所謂職責,我們可以理解他為功能,就是設計的這個類功能應該只有乙個,而不是兩個或更多。也可以理解為引用變化的原因,當你發現有兩個變化會要求我們修改這個類,那麼你就要考慮撤分這個類了。因為職責是變...

設計模式 七大設計原則

定義 應該有且只有乙個原因,引起類的變更 組合是一種強耦合關係,你我都有共同的生命週期,這種強耦合關係,不如直接使用介面實現 建議 介面一定要做到單一原則,類的設計盡量做到只有乙個原因引起變更 定義 所有使用父類的地方,必須能夠透明的使用其子類,反之不行 子類不能完整地實現父類的方法,或者父類的某些...