物件導向設計原則

2021-07-12 02:50:06 字數 1656 閱讀 9202

今天整理了一下物件導向設計的七種設計原則,整理了以下學習筆記。

1、  單一職責原則single responsibilityprinciple,srp

乙個物件應該只包含單一的職責,並且該職責被完整的封裝在乙個類中。(就乙個類而言,應該僅由乙個引起它變化的原因)。

單一職責原則是實現高內聚、低耦合的指導方針,是最簡單、卻最難運用的原則,需要設計人員發現類的不同職責並將其分離。

2、  開閉原則open-closed principle,ocp

軟體實體應當對擴充套件開放,對修改關閉。

開閉原則是指軟體實體應盡量在不修改原有**的情況下進行擴充套件。

3、  黎克特制代換原則liskov substitution principle,lsp

所有引用基類的地方必須能透明的使用其子類的物件。

黎克特制代換原則表明,在軟體中乙個基類物件替換成它的子類物件,程式將不會產生任何錯誤和異常,反過來則不成立。黎克特制代換原則是實現開閉原則的基礎,由於使用基類物件的地方都可以使用子類物件,因此在程式中盡量使用基類型別對物件進行定義,而在執行時在確定其子類型別,用子類物件來替換父類物件。

在運用黎克特制代換原則時,應該將父類設計為抽象類或者介面,讓子類繼承父類或實現父介面,並實現在父類中宣告的方法。

4、  依賴倒轉原則dependency inversion principle,dip

高層模組不應該依賴低層模組,它們都應該依賴抽象。抽象不應該依賴於細節,細節應該依賴於抽象。

原則要求:要針對介面程式設計,而不是針對實現程式設計。

在實現依賴倒轉原則時,需要針對抽象層進行程式設計,而將具體類的物件通過依賴注入(dependency injection,di)的方式注入其他物件中。

說明1:依賴注入是指當乙個物件要與其他物件發生依賴關係時,通過方法引數來注入所依賴的物件。依賴注入包含三種方式:

1)  構造注入:通過建構函式來傳入具體類的物件;

2)  設值注入:通過setter方法來傳入具體類的物件;

3)  介面注入:通過在介面中宣告的業務來傳入具體類。

這三種方法定義時用的是抽象型別,在執行時再傳入具體型別的物件,由子類物件來覆蓋父類物件。

說明2:在重構過程中,一般同時使用開閉,黎克特制代換和依賴倒轉原則。其中開閉原則是目標,黎克特制代換原則是基礎,依賴倒轉原則是手段。

5、  介面隔離原則inte***ce segregationprinciple,isp

客戶端不應該依賴那些它不需要的介面。

這裡的介面含義:

1)  一種是指乙個型別所具有的方法特徵的集合,僅僅是一種邏輯上的抽象;

2)  一種是某種語言具體的「介面」,有嚴格的定義和結構。

6、  合成復用原則composite reuse principle,crp

優先使用物件組合,而不是繼承來達到復用的目的。

在乙個新的物件裡通過關聯關係(包含組合關係和聚合關係)來使用一些已有的物件,使之成為新物件的一部分,新物件通過委派呼叫已有物件的方法達到復用功能的目的。

即:復用時要盡量使用組合/聚合關係(關聯關係),少使用繼承。

7、  迪公尺特法則law of demeter lod

每乙個軟體單位對其他的單位都只有最少的知識,而且侷限於那些與本單位密切相關的軟體單位。

迪公尺特法則要求乙個軟體實體應當盡可能少地與其他實體發生相互作用。

迪公尺特法則要求限制軟體實體之間通訊的寬度和深度。

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...

物件導向設計原則

物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...