物件導向設計原則 《敏捷軟體開發》

2021-08-25 04:15:36 字數 1512 閱讀 7913

摘抄自《敏捷軟體開發-原則、方法與實踐》-robert c. martin

(1)srp 單一職責原則

就乙個類而言,應該僅有乙個引起它變化的原因。

職責即為"變化的原因".

(2)ocp 開放封閉原則

軟體實體(類、模組、函式等)應該是可以擴充套件的,但是不可修改。

對於擴充套件是開放的,對於更改是封閉的.

關鍵是抽象.將乙個功能的通用部分和實現細節部分清晰的分離開來.

開發人員應該僅僅對程式中呈現出頻繁變化的那些部分作出抽象.拒絕不成熟的抽象和抽象本身一樣重要.

(3)lsp liskov替換原則

子型別必須能替換掉他們的基本型別

(4)dip 依賴倒置原則

抽象不應該依賴於細節。細節應該依賴於抽象。

hollywood原則: "don't call us, we'll call you".程式中所有的依賴關係都應該終止於抽象類和介面。針對介面而非實現程式設計。

任何變數都不應該持有乙個指向具體類的指標或引用。

任何類都不應該從具體類派生。

任何方法都不應該覆寫他的任何基類中的已經實現了的方法。

(5)isp 介面隔離原則

不應該強迫客戶依賴於他們不用的方法。介面屬於客戶,不屬於他所在的類層次結構。

多個面向特定使用者的介面勝於乙個通用介面。

(6)rep 重用發布等價原則

重用的粒度就是發布的粒度.

(7)ccp 共同重用原則

乙個包中的所有類應該是共同重用的。如果重用了包中的乙個類,那麼就要重用包中的所有類。

相互之間沒有緊密聯絡的類不應該在同乙個包中。

(8)crp 共同封閉原則

包中的所有類對於同一類性質的變化應該是共同封閉的。乙個變化若對乙個包影響,則將對包中的所有類產生影響,而對其他的包不造成任何影響.

(9)adp 無依賴原則

在包的依賴關係中不允許存在環.

細節不應該被依賴.

(10)sdp 穩定依賴原則

朝著穩定的方向進行依賴.

應該把封裝系統高層設計的軟體(比如抽象類)放進穩定的包中,不穩定的包中應該只包含那些很可能會改變的軟體(比如具體類)。

(11)sap 穩定抽象原則

包的抽象程度應該和其他穩定程度一致.

乙個穩定的包應該也是抽象的,乙個不穩定的包應該是抽象的.

(12)dap(default abstraction principle)預設抽象原則

在介面和實現介面的類之間引入乙個抽象類,這個類實現了介面的大部分操作.

(13)idp(inte***ce design principle)介面設計原則

規劃乙個介面而不是實現乙個介面。

(14)bbp(black box principle)黑盒原則

多用類的聚合,少用類的繼承。

(15)dcsp(don't concrete supperclass principle)不要構造具體的超類原則

避免維護具體的超類。

物件導向設計原則 《敏捷軟體開發》讀書筆記

摘抄自 敏捷軟體開發 原則 方法與實踐 robert c.martin 1 srp 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。職責即為 變化的原因 2 ocp 開放封閉原則 軟體實體 類 模組 函式等 應該是可以擴充套件的,但是不可修改。對於擴充套件是開放的,對於更改是封閉的.關鍵是...

敏捷軟體開發讀書筆記 物件導向的設計原則

srp 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因。ocp 開放封閉原則 軟體實體 類 模組 函式等 應該對擴充套件是開放的 易於擴充套件 但是對於修改是封閉的 不應修改 lsp liskov 替換原則 子類必須能夠替換掉它們的基類。dip 依賴倒置原則 抽象不應該依賴於細節,而細節應...

敏捷軟體開發 敏捷開發原則

編寫單元測試是一種驗證行為,更是一種設計行為。測試時乙個無價的文件。如果你想知道如何呼叫乙個函式或者建立乙個物件,會有乙個測試展示給你看。什麼是設計?不應該認為設計就是一組和 分離的uml圖。一組uml圖也許描繪了設計的一些部分,但是它不是設計。還是要 化 僵化性是指難以對軟體進行改動,即使是簡單的...