1. 程式人生 > >面向物件設計模式原則

面向物件設計模式原則

7種常用的面相物件設計原則

  • 單一職責原則(SRP):一個類只負責一個功能領域中的相應指責,就一個類而言,應該只有一個引起它變化的原因(可以實現低耦合,換句話說就是要承擔的責任少,被複用的就頻繁)

  • 開閉原則(OCP):軟體實體對擴充套件開放,對修改關閉。(可以在新增輔助屬性的時候關聯軟體實體,加入新屬性,形成新的擴充套件軟體實體)不能再修改抽象層的程式碼.

  • 里氏代換原則(LSP):所有引用父類的地方都能夠透明的使用其子類的物件。(當需要擴充套件一個新的子類的時候,可以繼承基類進行操作類的新行為而不需要修改之前的子類程式碼)

  • 依賴倒轉原則(DIP):抽象不應該依賴與細節,細節應該依賴於抽象。高層模組不應該依賴於底層模組,二者都應該依賴於抽象(這個概念很抽象)。
    (個人理解:在JAVA中,我們將不具體的稱為抽象,如介面和抽象類。將具體的稱為細節。抽象不可以被例項化,細節可以被例項化。高層的client呼叫底層的細節的時候,應該呼叫中間的抽象層,底層的細節也要依賴於中間的抽象層,這樣我們可以針對抽象層編碼)

    這裡有對DIP的詳細解釋

  • 介面隔離原則(ISP):使用多個專門的介面,而不是使用單一的總介面。(這個就好理解多了,也是為了減少耦合度,跟單一職責原則類似)

  • 合成複用原則(CRP):又稱組合/聚合複用原則。儘量使用物件組合,而不是繼承來達到複用的目的。(繼承的缺點多,會破環系統的封裝性)

  • 迪米特法則(LoD):又稱最少知識原則。指一個軟體實體應儘量少的和其他軟體實體發生相互作用。(這樣當對一個模組進行修改的時候,儘量少的影響到其他模組)