軟件設計原則

軟件設計原則

1. 開閉原則

定義:一個軟件實體如類/模塊和函數應該對拓展開放,對修改關閉

用抽象構建框架,用實現擴展細節

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

2. 依賴倒置原則

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

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

針對接口編程。不要針對實現編程

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

3. 單一職責原則

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

一個類,接口,方法只負責一項職責

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

4. 接口隔離原則

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

注意:一個類對應一個類的依賴應該建立在最小接口上
	  建立單一接口,不要建立龐大臃腫的解耦
	  儘量細化接口,接口的方法儘量少
	  注意適度原則,一定要適度
	  
優點:符合高內聚,低耦合的設計思想,從而使得類具有很好的可讀性,可拓展性和可維護性

5. 迪米特法則

定義:一個對象應該對其他對象保持最少的瞭解,又叫最少知道原則

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

優點:降低類之間的耦合

6. 里氏代換原則

如果對每一個類型爲T1的對象O1,都有類型爲T2的對象O2,使得T1定義的所有程序P在所有的對象O1都替換成O2時,程序P的行爲沒有發生變化,那麼類型T2是類型T1的子類型

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

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

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

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

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

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

優點
1. 約束繼承氾濫,開閉原則的一種體現
2. 加強程序的健壯性,同時變更時也可以做到非常好的兼容性,提高程序的維護性,擴展性,降低需求變更時引入的風險

7. 合成複用原則

定義:儘量使用對象組合,聚合,而不是繼承關係達到軟件複用的目的

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

優點:可以使系統更加靈活,降低類與類之間的耦合度,一個類的變化對其他類造成的影響相對較少
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章