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...