1. 面向對象設計原則
1.1 可維護性較低的軟體設計
- 過于僵硬
- 過于脆弱
- 複用率低
- 黏度過高
1.2 一個好的系統設計
- 可擴充性
- 靈活性
- 可插入性
複用:一個軟體的組成部分可以在同一個項目的不同地方甚至在不同的項目重複使用。
面向對象設計複用的目标:實作支援可維護性的複用。(抽象、繼承、封裝、多态)
重構:在不改變軟體現有功能的基礎上,通過調整程式代碼改善軟體的品質、性能、使其程式的設計模式和架構更趨合理,提高軟體的擴充性和維護性。
1.3 七大設計原則
- 單一職責原則(Single Responsibility Principle , SRP):一個對象應該隻包含單一的職責,并且該職責被完整地封裝在一個類中。
- 單一職責用于控制類的粒度大小。
- 是實作高内聚低耦合的指導方針
- 開閉原則(Open-Closed Principle , OCP):一個軟體實體應當對擴充開放,對修改關閉。
- 抽象化是開閉原則的關鍵
- 裡氏代換原則(Liskov Substitution Principle , LSP ):所有引用基類(父類)的地方必須能透明地使用其子類的對象。
- 裡氏代換原則是實作開閉原則的重要方式之一
- 子類必須實作父類的所有方法
- 盡量把父類設計為抽象類或者接口
- 依賴倒轉原則(Dependence Inversion Principle . DIP ):高層子產品不應該依賴低層子產品,它們都應該依賴抽象。抽象不依賴于細節,細節應該依賴于抽象。
- 要針對接口程式設計,不要針對實作程式設計。
- 開閉原則是面向對象設計的目标,依賴倒轉原則就是面向對象設計的主要手段。
- 類之間的耦合
- 依賴注入:将一個類的對象傳入另一個類,注入時盡量注入父類對象,程式運作時通過子類對象覆寫父類對象。
- 構造注入、Setter注入、接口注入
- 接口隔離原則(Interface Segregation Principle , ISP):用戶端不應該依賴那些它不需要的接口(方法)。
- 大接口要分割成一些更細小的接口。
- 使用多個專門的接口,而不使用單一的總接口。
- 接口僅僅提供用戶端需要的方法。
- 合成複用原則(Composite Reuse Principle , CRP ):又稱為組合/聚合複用原則,盡量使用對象組合,而不是繼承來達到複用的目的。
- 在一個新的對象裡通過關聯關系來使用一些已知對象,使之成為新對象的一部分。
- 迪米特法則(Law of Demeter , LoD ):又稱為最少知識原則,不要和“陌生人”說話隻與你的直接朋友通信。
2. 初識設計模式
作者:靠譜楊
我可能不是天才,但我會努力成為人才。
更多日常分享盡在我的VX公衆号:小楊的挨踢IT生活