1. 程式人生 > 其它 >OOP-面向物件程式設計七大原則

OOP-面向物件程式設計七大原則

OOP七大設計原則

設計原則 一句話歸納 目的
開閉原則 對擴充套件開放,對修改關閉 降低維護帶來的新風險
依賴倒置原則 高層不應該依賴低層,要面向介面程式設計 更利於程式碼結構的升級擴充套件
單一職責原則 一個類只幹一件事,實現類要單一 便於理解,提高程式碼的可讀性
介面隔離原則 一個介面只幹一件事,介面要精簡單一 功能解耦,高聚合、低耦合
迪米特法則 不該知道的不要知道,一個類應該保持對其它物件最少的瞭解,降低耦合度 只和朋友交流,不和陌生人說話,減少程式碼臃腫
里氏替換原則 不要破壞繼承體系,子類重寫方法功能發生改變,不應該影響父類方法的含義 防止繼承氾濫
合成複用原則 儘量使用組合或者聚合關係實現程式碼複用,少使用繼承 降低程式碼耦合
  1. 開閉原則:

    • 對擴充套件開放:某模組的功能是可擴充套件的,則該模組是擴充套件開放的。使軟體系統的擴充套件性更強。
    • 對修改關閉:某模組被其他模組呼叫,如果該模組的原始碼不允許修改,則該模組修改關閉的。使軟體系統的功能穩定性更強。

    穩定性:開閉原則要求擴充套件功能不修改原來的程式碼,這可以讓軟體系統在變化中保持穩定。
    擴充套件性:開閉原則要求對擴充套件開放,通過擴充套件提供新的或改變原有的功能,讓軟體系統具有靈活的可擴充套件性。
    遵循開閉原則的系統設計,可以讓軟體系統可複用,並且易於維護。

  2. 依賴倒置原則:

    細節具有多變性,而抽象層則相對穩定,應該面向介面(抽象)程式設計,而不是面向實現程式設計。

  3. 單一職責原則:

    單一職責原則規定一個類應該有且僅有一個引起它變化的原因,否則類應該被拆分

  4. 介面隔離原則:

    客戶端不應該被迫依賴於它不使用的方法,一個類對另一個類的依賴應該建立在最小的介面上。

    以上兩個定義的含義是:要為各個類建立它們需要的專用介面,而不要試圖去建立一個很龐大的介面供所有依賴它的類去呼叫。

  5. 迪米特法則:

    一個類應該儘可能少的與類發生相互依賴,侷限於與本類密切相關的類,降低耦合性。

  6. 里氏代換原則:

    所有引用父類的地方必須能使用子類物件,且程式碼正常工作,不應該使用if/else判斷類。

  7. 合成複用原則:

    如果要使用繼承關係,則必須嚴格遵循里氏替換原則。

    合成複用原則是通過將已有的物件納入新物件中,作為新物件的成員物件來實現的,新物件可以呼叫已有物件的功能,從而達到複用。

參考資料:

http://c.biancheng.net/view/1322.html

https://blog.csdn.net/qq_34760445/article/details/82931002#The_OpenClosed_Principle_OCP_18