軟體設計原則

2021-10-03 03:30:52 字數 1373 閱讀 2652

定義:乙個軟體實體如類/模組和函式應該對拓展開放,對修改關閉

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

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

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

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

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

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

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

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

優點: 降低類的複雜度

提高類的可讀性

提高系統的可維護性

降低變更引起的風險

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

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

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

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

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

優點:符合高內聚,低耦合的設計思想,從而使得類具有很好的可讀性,可拓展性和可維護性

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

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

優點:降低類之間的耦合

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

定義擴充套件:

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

引申含義:子類可以覆蓋父類的功能,但不能改變父類原有的功能

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

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

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

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

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

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

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

聚合是has-a,組合是contains-a

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

軟體設計原則

開閉原則 ocp 軟體設計的最大原則 這個原則說的是 對擴充套件開放,對修改關閉。其實意思是說,給系統新增新的功能,但不修改原有 如果能做到呢,關鍵在於抽象化,也就是封裝變化,抽象層不變,讓具體實現依賴抽象隨需求變化。使得系統具有很強的擴充套件性和可維護性。黎克特制代換原則 任何基類可以出現的地方,...

軟體設計原則

高內聚 低耦合 乙個軟體系統要有乙個穩定的架構,不會隨需求的改變而發生巨大的變動。因此,高內聚 低耦合是乙個軟體系統設計中必須遵循的基本原則 面向抽象程式設計 在面向過程的軟體開發中,上層元件呼叫下層元件,就意味著上層元件依賴於下層元件,當下層元件發生劇烈變化時,上層元件也要跟著一起發生變動,這將導...

軟體設計原則

軟體開發中有以下一些基本原則,深刻掌握這些原則比掌握一門技術要重要。1.開閉原則 open closed principle,ocp 乙個軟體應當對擴充套件開放,對修改關閉。也就是說我們在設計軟體時,應當可以在不必修改源 的情況下改變 擴充套件 其行為。開閉原則是非常重要的設計原則,其它的設計原則實...