OOD之物件導向設計原則

2021-07-24 18:02:17 字數 1633 閱讀 1768

一、概述

物件導向有七大設計原則:單一職責原則、開閉原則、黎克特制代換原則、依賴倒轉原則、介面隔離原則、合成復用原則、迪公尺特法則。

最主要的是:solid

s:單一職責原則

o:開閉原則

l: 黎克特制替換原則

i:介面隔離原則

d:依賴倒轉原則

二、物件導向設計原則

1、單一職責原則

上面這個圖,有趣地反映了單一職責的重要性,如果我們做乙個集各種功能於一身的工具,那麼這個工具是不方便使用的。

從物件導向的角度講,就是導致類變化的因素永遠不要多於乙個。即乙個類有且只有乙個職責,如果乙個類有多於乙個職責,**會變得耦合,

2、開閉原則

配圖重口味,就不貼了

軟體實體(類、模組、方法等)應該對擴充套件開放,對修改關閉。

對擴充套件開放的類或模組的行為可以被擴充套件,當需求變化時能夠快速地滿足需求變更或新需求。對修改關閉的類或模組(一般都是程式的核心模組)在需求變化或新增新需求時不應被修改。

3、黎克特制替換原則

原則描述:任何使用子類的地方都可以透明地使用其父類物件,或者說,子型別必須能夠替換為它的基型別。

注:黎克特制替換原則僅僅是一種確保繼承被正確使用的手段,確保繼承真正是「is a」的關係。

如果不遵守lsp原則,類的繼承就會混亂,如果子類例項作為引數傳遞給方法,後果難以**

如果不尊師lsp原則,基於父類編寫的單元測試**將無法成功執行子類

4、介面隔離原則

原則描述:應該使用多個單一的介面,而不是單一的總介面,或者說:使用者不應該被迫依賴他們不使用的介面。

5、依賴倒轉原則

原則描述:高層次的模組不應該依賴於低層次的模組,而是都應該依賴於抽象

6、其他原則

合成復用原則(組合替換繼承原則):盡量使用組合而不是繼承來達到復用的目的

迪公尺特法則:乙個軟體實體應盡可能少地與其他實體互動

共同封裝原則:相關的類應一起打包

穩定抽象原則:類越穩定,就越應該是抽象類

三、設計模式

設計模式是物件導向原則在某些特定或常用條件下的應用,並做了一些標準化。

物件導向設計模式很多,但是gof23種設計模式是其他設計模式的基礎。

設計模式不是來自於理論,而是實踐,總是先有問題場景,在根據需求和場景不斷演化設計方法,最終把一些方案標準化為模式。學習設計模式,要盡量用生活中的真實問題來理解和分析。

參看: 

物件導向設計 OOD

乙個類有且只有乙個職責 為了同乙個目的 把東西分到不能再分。對擴充套件開放,對修改關閉。要修改外觀,只需要換件衣服就可以了,不需要把自己的 給弄掉 關鍵是把不變的東西抽象出來 子型別必須能夠替換他們的基類 鳥類,大雁繼承ok,鴕鳥繼承no,no fly。違反替換規則,應該將鳥類分為飛鳥和不飛鳥,然後...

OOD設計原則

以下內容來自 敏捷軟體開發 原則 模式與實踐 ood設計原則 srp,單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因 將過多的職責耦合在乙個類中導致了脆弱設計 職責是變化的原因 如果應用程式變化的方式總是導致兩個職責同時變化,則不應該分離他們 把業務規則和持久化子系統繫結在一起是自討苦吃,...

java 之 物件導向思想設計原則及常見設計模式

物件導向思想設計原則 在實際的開發中,我們要想更深入的了解物件導向思想,就必須熟悉前人總結過的物件導向的思想的設計原則 單一職責原則 開閉原則 黎克特制替換原則 依賴注入原則 介面分離原則 迪公尺特原則單一職責原則 其實就是開發人員經常說的 高內聚,低耦合 也就是說,每個類應該只有乙個職責,對外只能...