設計模式遵循的七大原則

2021-06-09 12:06:06 字數 1957 閱讀 2098

開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,盡量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的**能不動則不動。這個原則有兩個特性,乙個是說「對於擴充套件是開放的」,另乙個是說「對於更改是封閉的」。面對需求,對程式的改動是通過增加新**進行的,而不是更改現有的**。這就是「開放-封閉原則」的精神所在

設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。

查明可能發生的變化所等待的時候越長,要建立正確的抽象就越困難。

然而對於應用程式中的每個部分都刻意地進行抽象同樣不是乙個好主意,拒絕不成熟的抽象和抽象本身一樣重要。

開放-封閉原則,可以保證以前**的正確性,因為沒有修改以前**,所以可以保證開發人員專注於將設計放在新擴充套件的**上。

黎克特制替換原則通俗的來講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能。

它包含以下4層含義:

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

2.子類中可以增加自己特有的方法。

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

4.當子類的方法實現父類的抽象方法時,方法的後置條件(即方法的返回值)要比父類更嚴格。

3.依賴倒轉原則(dependence inversion principle)

依賴倒置原則的中心思想是面向介面程式設計,傳遞依賴關係有三種方式,以上的說的是是介面傳遞,另外還有兩種傳遞方式:構造方法傳遞和setter方法傳遞,相信用過spring框架的,對依賴的傳遞方式一定不會陌生。

在實際程式設計中,我們一般需要做到如下3點:

低層模組盡量都要有抽象類或介面,或者兩者都有。

變數的宣告型別盡量是抽象類或介面。

使用繼承時遵循黎克特制替換原則。

總之,依賴倒置原則就是要我們面向介面程式設計,理解了面向介面程式設計,也就理解了依賴倒置。

4.介面隔離原則(inte***ce segregation principle)

1. 介面盡量小,但是要有限度。對介面進行細化可以提高程式設計靈活性是不掙的事實,但是如果過小,則會造成介面數量過多,使設計複雜化。所以一定要適度。

2. 為依賴介面的類定**務,只暴露給呼叫的類它需要的方法,它不需要的方法則隱藏起來。只有專注地為乙個模組提供定**務,才能建立最小的依賴關係。

3. 提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情。

運用介面隔離原則,一定要適度,介面設計的過大或過小都不好。設計介面的時候,只有多花些時間去思考和籌畫,才能準確地實踐這一原則。

5.組合/聚合復用原則

就是說要盡量的使用合成和聚合,而不是繼承關係達到復用的目的

該原則就是在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分:新的物件通過向這些物件的委派達到復用已有功能的目的。

6.迪公尺特法則(law of demeter)

迪公尺特法則又叫最少知道原則。通俗的來講,就是乙個類對自己依賴的類知道的越少越好。也就是說,對於被依賴的類來說,無論邏輯多麼複雜,都盡量地的將邏輯封裝在類的內部,對外除了提供的public方法,不對外洩漏任何資訊

7.單一職責原則(single responsibility principle)

1.可以降低類的複雜度,乙個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多;

2.提高類的可讀性,提高系統的可維護性;

3.變更引起的風險降低,變更是必然的,如果單一職責原則遵守的好,當修改乙個功能時,可以顯著降低對其他功能的影響。

需要說明的一點是單一職責原則不只是物件導向程式設計思想所特有的,只要是模組化的程式設計,都需要遵循這一重要原則。

設計模式七大原則

open closed principle ocp 最基礎的原則,對擴充套件開放,對修改關閉強調的是用抽象構建框架,用實現擴充套件細節,可以提高軟體系統的可復用性和可維護性 dependence inversion principle,dip 程式要依賴於抽象介面,不要依賴於具體實現。即面向介面程式...

設計模式 七大原則

懂了設計模式,你就懂了物件導向分析和設計 ooa d 的精要.編寫軟體的過程,面臨 耦合性 內聚性 維護性 可擴充套件性 重用性 靈活性 等各方面的挑戰。設計模式就是為了解決這些問題 程式設計時遵循的原則,各種設計模式的基礎 注意事項和細節 那麼問題來了,如何正確使用繼承?答案 黎克特制替換原則 基...

設計模式七大原則

編寫軟體過程中,程式設計師面臨著來自耦合性,內聚性以及可維護性,可擴充套件性,重用性,靈活性等多方面的挑戰,設計模式是為了讓程式具有更好以下特性 1 重用性 即 相同功能的 不用多次編寫 3 可擴充套件性 即 當需要增加新的功能時,非常的方便,稱為可維護 4 可靠性 即 當我們增加新的功能後,對原來...