一些物件導向的設計法則 1

2021-04-09 08:45:45 字數 1165 閱讀 8489

1."是乙個…的特殊型別",而非"是乙個由…所扮演的角色"

-->失敗。乘客是人所扮演的一種角色。**人亦然。

2.永遠不需要轉化

-->失敗。隨著時間的發展,乙個person的子類例項可能會從passenger轉變成agent,再到agent passenger。

3.擴充套件,而非重寫和廢除

-->通過。

4.不要擴充套件乙個工具類

-->通過。

5.在問題域內,特指一種角色,交易或裝置

-->失敗。person不是一種角色,交易或裝置。

繼承並非適用於此處!

使用組合進行挽救!

1."是乙個…的特殊型別",而非"是乙個由…所扮演的角色"

-->通過。乘客和**人都是特殊型別的人所扮演的角色。

2.永遠不需要轉化

-->通過。乙個passenger物件將保持不變;agent物件亦然。

3.擴充套件,而非重寫和廢除

-->通過。

4.不要擴充套件乙個工具類

-->通過。

5.在問題域內,特指一種角色,交易或裝置

-->通過。personrole是一種型別的角色。

繼承適用於此處!

1."是乙個…的特殊型別",而非"是乙個由…所扮演的角色"

-->通過。預訂和購買都是一種特殊型別的交易。

2.永遠不需要轉化

-->通過。乙個reservation物件將保持不變;purchase物件亦然。

3.擴充套件,而非重寫和廢除

-->通過。

4.不要擴充套件乙個工具類

-->通過。

5.在問題域內,特指一種角色,交易或裝置

-->通過。是一種交易。

繼承適用於此處!

1."是乙個…的特殊型別",而非"是乙個由…所扮演的角色"

-->失敗。預訂不是一種特殊型別的observable。

2.永遠不需要轉化

-->通過。乙個reservation物件將保持不變。

3.擴充套件,而非重寫和廢除

-->通過。

4.不要擴充套件乙個工具類

-->失敗。observable就是乙個工具類。

5.在問題域內,特指一種角色,交易或裝置

-->不適用。observable是乙個工具類,並非乙個問題域的類。。

繼承並非適用於此處!

物件導向的一些法則

物件導向的一些法則 法則1 優先使用 物件 組合,而非繼承 組合是一種通過建立乙個組合了其它物件的物件,從而獲得新功能的復用方 法有些時候也稱之為 聚合 aggregation 或 包容 containment 聚合 乙個物件擁有另乙個物件或對另乙個物件負責 即乙個物件包含另乙個物件或是另乙個物件的...

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

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

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

簡介 因為七大原則比較多,所以簡單梳理一下七大原則之間的關係和邏輯,便於理解和應用。對於每種原則具體的思想和實現,沒有舉例。開閉原則 open closed principle,ocp 黎克特制替換原則 liskov substitution principle,lsp 依賴倒置原則 depende...