簡要介紹設計原則

類之間關係

  設計原則是爲了提高軟件系統的可維護性和可複用性,增加軟件的可擴展性和靈活性。設計原則是研究類之間關係的科學。所以,在介紹設計原則之前應對類之間的關係做相應的介紹。

耦合強度
  耦合程度由弱到強,依賴關係<關聯關係<聚合關係<組合關係<泛化關係<實現關係。

依賴關係
  主要通過局部變量、方法參數、通過類直接調用靜態方法產生的依賴。

關聯關係
  通過成員變量產生依賴,兩個依賴方生命週期沒有影響。

聚合關係
  通過成員變量產生依賴,兩個依賴方生命週期沒有影響,被依賴方能被其他類依賴。

組合關係
  通過成員變量產生依賴,被依賴方生命週期隨依賴方生命週期變化,被依賴方屬於依賴方獨有。

泛化關係
  通過子類繼承父類產生依賴,屬於強依賴。

實現關係
  通過實現接口產生依賴。

聚合關係和組合關係的區別
  聚合關係和組合關係的主要區別在於聚合關係被依賴對象不隨依賴方變化而變化,而組合關係被依賴對象的生命週期是依附於依賴方得。


設計原則

   作爲軟件開發人員的我們,每天面對的都是變化,爲了應對開發過程中的變化而做出積極響應,我們在設計時應遵循設計原則,從而使修改維護變得簡單可靠。
 在軟件設計中,抽象很少有變化,而實現可能會不同,所以應該提煉抽象,封印實現,削弱類之間的強依賴方式,減少類之間依賴層次。力求做到“高內聚,低耦合”。下面介紹解決此類問題的7種設計原則。


開閉原則

  開閉原則定義是對擴展開放,對修改關閉。開閉原則實現方法是“抽象約束,封裝變化”。通過接口和抽象類爲軟件定義一個相對穩定的抽象層,而將擴展和封裝到具體的實現類中。開閉原則的好處在於定義一個穩定的抽象層,而在代碼依賴中依賴抽象。在應對改變時,具體的實現對於依賴方來說是透明的,所以變化的只是實現,依賴方變動很少,從而加大生產效率。


里氏替換原則

  里氏替換原則確保父類的性質在子類中依然成立。里氏替換原則闡述的是繼承之間的關係,里氏替換原則提倡的是在繼承中只是對父類的擴展,儘量不要重寫父類的方法。里氏替換原則保證在父類能用的地方子類也同樣能實用,而子類覆蓋父類的方法導致程序錯誤,這應該重新整理類之間的繼承關係。里氏替換原則是實現開閉原則的重要途經,他保證繼承的可複用性,降低程序出錯的可能性。


依賴倒置原則

  依賴倒置原則提出模型或者類之間應該依賴高層抽象,而高層抽象不應該依賴細節。具體的實現方法是面向接口編程,而不是依賴具體的實現編程。在面向對象編程中,一般抽象層是相對穩定的,而具體的實現層則是變化的。依賴倒置原則提出具體的依賴應該是抽象層,所以它減少了並行開發引起的風險,提高代碼的可讀性和可維護性,它降低了類之間的耦合關係。是實現開閉原則的重要途經。


單一職責原則

  單一職責原則指出類的變化原因,一個類應該只有一個引起它變化的原因,否則這個類應該被拆分。如果一個類的職責過多,那麼一個功能引起這個類變化,而可能抑制類的其他功能。同樣,在需要一個職責的地方,不得不實現類的其他職責,產生了大量的代碼冗餘,使得類的可複用性和可維護性變差。所以遵守單一職責原則,可保證代碼的可讀性、可維護性。


接口隔離原則

  接口隔離原則要求開發人員把龐大、臃腫的接口拆分爲功能獨立、模塊清晰的多個接口供具體的實現使用。接口隔離原則將接口拆分,增大程序的靈活性。龐大、臃腫的接口拆分爲單個、獨立的接口,在通過接口的繼承實現多個接口的整合,體現抽象的層次性。爲實現細節提供獨立的接口定義,將類之間的實現關係轉換爲依賴關係,降低程序的耦合性。
  接口隔離原則和單一職責原則的區別:單一職責原則闡述的是具體實現,針對的是程序具體的實現;而接口隔離闡述的是接口,針對的是程序的抽象和整體。


迪米特法則

  迪米特法則又稱最少知道原則,迪米特法則指出發生方法調用的地方應該是直接和類有關聯的對象。這些能調用的地方包含當前對象本身、當前對象的成員對象、當前對象所創建的對象、當前對象的方法參數等。這些對象同當前對象存在關聯、聚合或組合關係,可以直接訪問這些對象的方法。迪米特法則強調只依賴於當前類擁有的成員,所以減低了類之間的耦合性,增大了代碼的可複用性。
  迪米特法則的實現,主要從依賴者和被依賴者角度出發,依賴者只依賴和自己相關聯的依賴,被依賴者只提供相關的接口(方法)。在類的劃分上,應該創建弱耦合的類。類與類之間的耦合越弱,就越有利於實現可複用的目標。在類的結構設計上,儘量降低類成員的訪問權限。在類的設計上,優先考慮將一個類設置成不變類。在對其他類的引用上,將引用其他對象的次數降到最低。不暴露類的屬性成員,而應該提供相應的訪問器(set 和 get 方法)。謹慎使用序列化(Serializable)功能。


合成複用原則

  合成複用原則要求在軟件複用時,要儘量先使用組合或者聚合等關聯關係來實現,其次才考慮使用繼承關係來實現。複合複用原則是將可能的繼承關係轉變爲依賴關係,與繼承關係相比,採用聚合、組合關係,能保證被依賴方的封裝性。因爲依賴方唯一能操縱被依賴方的方式是通過方法調用,被依賴方的改變不會過多得影響依賴方,減少類之間的耦合性。依賴方可以替換被依賴方,增加系統的靈活性。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章