設計模式的六大原則 單一職責原則(Single responsibility principle):一個類的職責應該單一 (類如果職責單一,那導致類修改的原因也會唯一,不會因為多種原因都要去修改類) 開放-關閉原則(Open Close Principle):也叫開閉原則,要求程式對擴展開放,對修改 ...
設計模式的六大原則
- 單一職責原則(Single responsibility principle):一個類的職責應該單一
- 如果一個類職責過多,應該拆分
(類如果職責單一,那導致類修改的原因也會唯一,不會因為多種原因都要去修改類)
- 開放-關閉原則(Open Close Principle):也叫開閉原則,要求程式對擴展開放,對修改關閉
- 在程式擴展新功能時,不修改原有代碼,而是進行擴展,使程式的擴展性好,維護性好
- 里氏替換原則(Liskov Substitution Principle):所有父類出現的地方,子類都能替換,並且結果不變
- 子類可以實現父類的抽象方法,但子類不應該重寫父類已實現的方法
- 子類可以增加自己的獨有方法
- 子類的方法重載父類的方法時,方法的形參要比父類方法的形參更寬鬆
- 子類的方法實現父類的抽象方法時,方法的返回值要比分類更嚴格
- 介面隔離原則(Interface Segregation Principle):每個介面中都不存在子類用不到又必須實現的方法
- 如果存在,需要拆分
- 依賴倒轉原則(Dependence Inversion Principle):應該面對介面編程,而不是面對細節編程
- 高層模塊不依賴底層,兩個都應該依賴介面(一個模塊引用了鏈接資料庫的代碼,高層依賴了底層,如果替換資料庫時,需求修改高層代碼,無法復用,如果依賴介面,則新增資料庫鏈接實現類即可)
- 抽象不應該依賴細節,細節應該依賴抽象
(以上原則英文首字母組成SOLID,又叫SOLID準則)
- 迪米特法則(又叫最少知道原則)(Law of Demeter):如果兩個二類不必彼此直接通信,那麼這兩個類就不應當發生直接的相互作用
- 一個類對自己依賴的類知道的越少越好。也就是說無論被依賴的類多麼複雜,都應該將邏輯封裝在方法的內部,通過public方法提供給外部。這樣當被依賴的類變化時,才能最小的影響該類
- 只與直接的朋友通信。類之間只要有耦合關係,就叫朋友關係。耦合分為依賴、關聯、聚合、組合等。我們稱出現為成員變數、方法參數、方法返回值中的類為直接朋友。局部變數、臨時變數則不是直接的朋友。我們要求陌生的類不要作為局部變數出現在類中
總結:原則應該根據實際情況來儘量滿足,也不用一味糾結於是否滿足原則。