關於物件導向設計原則的一些理解

2021-10-01 10:08:04 字數 1609 閱讀 4749

簡介:因為七大原則比較多,所以簡單梳理一下七大原則之間的關係和邏輯,便於理解和應用。對於每種原則具體的思想和實現,沒有舉例。

開閉原則(open closed principle,ocp)

黎克特制替換原則(liskov substitution principle,lsp)

依賴倒置原則(dependence inversion principle,dip)

單一職責原則(single responsibility principle,srp)

介面隔離原則(inte***ce segregation principle,isp)

迪公尺特法則(law of demeter,lod)

合成復用原則(composite reuse principle,crp)

我認為,物件導向設計原則有乙個很核心的思想就是復用,所有的原則都是為了更好的復用**。設計模式就是充分利用了這些原則,指出了如何設計,能提高**可復用性、可維護性、可讀性、穩健性以及安全性的解決方案。

既然想要復用,那麼最核心的地方應該就在於高內聚,低耦合

首先是內聚,如果乙個模組足夠"小",功能足夠單一,它的內聚度就高,從而能更靈活以及更好得被復用。

其次是耦合,當兩個模組之間關聯度越小,那麼顯然就更靈活,更易於擴充套件;如果兩個模組有著千絲萬縷的關係,那麼其中乙個變化,必然會嚴重影響另乙個,而新的模組想要加入,也必然要處理更多的細節。這很不明顯不利於復用。

所以我們可以從加強內聚降低耦合這兩個方面來梳理我們的七大原則。

當我們設計程式的時候,大部分都是在設計類和介面。那麼為了增強類和介面的內聚性,可以使用以下這兩個原則:

單一職責原則:提高類的內聚。

介面隔離原則:提高介面的內聚。

我們都知道類間發生聯絡,最常用的無非就是繼承父類,實現介面,關聯等。

那麼我們應該如何降低耦合呢,開閉原則給了我們很好的答案。

開閉原則(open closed principle,ocp):我們在設計程式時,應該對擴充套件開放,對修改關閉。也就是說,當有新的模組加進來的時候,我們是不應該去修改原有的**的。但是對於更加具體的操作,開閉原則還沒有說明,而以下的三個原則,就是開閉原則的重要實現手段。

依賴倒置原則:推薦我們在設計類間關係的時候,使用面向介面的方式。

合成復用原則:推薦我們在設計類間關係的時候,不使用繼承,而是用關聯關係(即乙個類當成另乙個類的成員變數)。

黎克特制替換原則 :當我們使用繼承時,要注意達到——父類物件能出現的地方,子類物件必然也能出現,並且語法和業務邏輯上都不會出錯。這就告訴我們盡量不要重寫父類的方法。

除了以上4個更偏向於降偶的原則外,還有乙個迪公尺特法則,也是用來降低耦合度的。他要求兩個類之間如果無須直接通訊,那就應該盡力通過第三方互動,並且要盡可能少得暴露自己的資訊給外界。

物件導向類設計的一些原則

敏捷軟體開發 原則,模式與實踐 一書中的物件導向類設計的一些原則 單一職責原則 對乙個類而言,應該僅有乙個引起它變化的原因 開放,封閉原則 軟體實體 類,模組,函式等等 應該是可以擴充套件的,但是不可修改的。liskov替換原則 子型別必須能夠替換掉它的基型別。依賴倒置原則 a.高層模組不應該依賴於...

關於物件導向的一些基礎認知和理解

物件導向的解釋在網上一大堆,但每個人在不同的階段都對它有不同的理解。在這裡我記錄一下我目前對它的一些理解。唉 之前寫的幾百字說不見就不見了,讓我又得從新寫,真是讓人煩惱。物件導向在目前的我看來,就是一種 實現的設計方式。它們夠讓人更加形象和直觀的去理解或者實現 在我剛開始學習的時候,或者說大多數人都...

關於物件導向的一些思考

物件導向方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。不過這麼些年來,也週期性的對物件導向做些思考。或對或錯,我想都值得總結一下。一家之言,來看的同學不必太當真。首先我們要區分一下 基於物件 和 物件導向 的區別。基於物件,通...