已經進入設計模式的學習有一段時間了,今天來說一說設計模式的六大原則。
這六大原則分別是:單一職責原則(SRP)、開放-封閉原則(The Open-Closeed Principle,OCP)、依賴倒轉原則、里氏代換原則、迪米特法則(LoD)、合成/聚合複用原則(CARP)
概念:
單一職責原則:就一個類而言,應該僅有一個引起它變化的原因。
開放-封閉原則:軟件實體(類、模塊、函數等等)應該可以擴展,但是不可以修改。
依賴倒轉原則:高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
里氏代換原則:子類可以擴展父類的功能,但不能改變父類原有的功能。有以下四種含義:
1.子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。
2.子類中可以增加自己特有的方法。
3.當子類的方法重載父類的方法時,方法的前置條件要比父類方法的輸入參數更寬鬆。
4.當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。
迪米特法則:也叫最少知識原則,如果兩個類不必彼此直接通信,那麼這兩個類就不應當發生直接的相互作用。如果
其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。
合成/聚合複用原則:儘量使用合成/聚合,儘量不要使用類繼承。
優點:
單一職責原則:(易維護、易擴展、易複用、靈活多樣)
1.可以降低類的複雜度,一個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;
2.提高類的可讀性,提高系統的可維護性;
3.變更引起的風險降低,變更是必然的,如果單一職責原則遵守的好,當修改一個功能時,可以顯著降低對其他
功能的影響。
開放-封閉原則:(可維護、可擴展、可複用、靈活性好)
面對需求的改變時可以保持相對穩定,使得系統可以在第一個版本之後不對推出新的版本。
依賴倒轉原則(主要是針對大中型項目):
1.能夠規避一些非技術因素引起的問題;
2.可以減少需求變化引起的工作量劇增的情況;
3.減少人員變化對項目的影響;
4.可以讓維護人員輕鬆地擴展和維護。
里氏代換原則:
在父類關閉的條件下實現了子類擴展,代碼出錯的機率會大大降低。
迪米特法則:
降低類之間的耦合
合成/聚合複用原則:
1.有助於你保持每個類被封裝,並集中在單個任務上;
2.類與類繼承層次會保持較小規模,並且不太可能增長爲不可控制的龐然大物。
總結:
六大原則是學習設計模式的一個前提。只有掌握了六大原則以後,設計模式才能很好的去理解和把控。六大原則指導23模式的實現,都包含了封裝、繼承、多態這三個特性。對這六大原則的學習將伴隨着23模式的學習而更加深入。