面向對象設計原則
視訊轉載連結:https://www.bilibili.com/video/av68337336/?p=1
依賴倒置原則(DIP)
- 高層子產品(穩定)不應該依賴底層子產品(變化),二者都應該依賴與抽象(穩定)
- 抽象(穩定)不應該依賴與實作細節(變化),實作細節應該依賴與抽象(穩定)
開放封閉原則(OCP)
- 對擴充開放,對更改封閉
- 類子產品應該室可擴充的,但是不可修改
單一職責原則(SRP)
- 一個類應該僅有一個引起它變化的原因
- 變化的方向隐含着類的責任
Liskov替換原則(LSP)
- 子類必須能夠替換它們的基類(IS-A)
- 繼承表達類型抽象
接口隔離原則(ISP)
- 不應該強迫客戶程式依賴它們不用的方法
- 接口應該小而完備
優先使用對象組合,而不是類繼承
- 類繼承通常為“白箱複用”,對象組合通常為“黑箱複用”
- 繼承在某種程度上破壞了封裝性,子類父類耦合度高
- 而對象組合則隻要求被組合的對象具有良好定義的接口,耦合度低
封裝變化點
- 使用封裝來建立對象之間的分界層,讓設計者可以在分界層的一側進行修改,而不會對另一側産生不良的影響,進而實作層次間的松耦合
針對接口程式設計,而不是針對實作程式設計
- 不将變量類型聲明為某個特定的具體類,而是聲明為某個接口
- 客戶程式無需獲知對象的具體類型,隻需要知道對象所具有的接口
- 減少系統中各部分的依賴關系,進而實作 “高内聚、松耦合”的設計方案
将設計原則提示為設計經驗
設計習語 Design Idioms
- Design Idioms 描述與特定程式設計語言相關的低層模式,技巧,慣用法
設計模式 Design Patterns
- Design Patterns 主要描述的是“類與互相通信的對象之間的組合關系,包括它們的角色、責任、協作方式等方面”
架構模式 Architectural Patterns
- Architectural Patterns 描述系統中與基本結構組織關系密切的高層模式,包括子系統劃分,職責,以及如何組織它們之間的關系的規則