1. 依賴倒置原則
原則定義: 高層模塊不應該依賴底層模塊檩赢,兩者都依賴于抽象吕嘀;抽象不應該依賴細節(jié);細節(jié)應該依賴于抽象 贞瞒。
image.png
2. 開放關閉原則
一個軟件實體類偶房,模塊和函數應該對擴展開放,而對修改關閉军浆,具體來說你應該通過擴展來實現變化棕洋,而不是通過修改原有的代碼來實現變化,該原則是面向對象設計的最基本原則乒融。
實現開閉原則的指導思想就是:
- 抽象出相對穩(wěn)定的接口掰盘,這部分應該不改動或者很少改動
- 封裝變化
image.png
3. 單一職責原則
一個類有且僅有一個職責,只有一個引起他變化的原因赞季,其核心是解耦和高內聚
image.png
4 里氏替代原則
所有引用基類的地方必須透明的使用其子類的對象
簡單來說愧捕,所有使用基類代碼的地方,如果換成子類對象的時候還能夠正常運行申钩,則滿足這個原則次绘,否則就是繼承關系有問題,應該廢除兩者的繼承關系,這個原則可以用來判斷我們的對象繼承關系是否合理邮偎。
image.png
5. 接口隔離原則
不能強迫用戶使用他們不使用的接口罗洗,簡單來說就是客戶端需要什么接口,就提供給它什么樣的接口钢猛,其它多余的接口就不要提供,不要讓接口變得臃腫轩缤,否則當對象一個沒有使用的方法被改變了命迈,這個對象也將會受到影響。接口的設計應該遵循最小接口原則
image.png
image.png
6.優(yōu)先使用對象組合而不是類繼承
合比繼承擁有更多的靈活性火的。組合允許在運行時設置屬性壶愤,并通過使用接口來實現,我們可以使用多態(tài)在類運行時改變類的行為馏鹤,從而提供更好的接口實現征椒。
7. 封裝變化點
使用封裝來創(chuàng)建對象之間的分界層,讓設計這可以在分界層的一層進行修改湃累,而不會對另一側產生不良的影響勃救,從而實現層次間的松耦合
8. 針對接口編程,而不是針對實現編程
- 不將變量類型聲明為某個特定的具體類治力,而是聲明為某個接口蒙秒。
- 客戶程序無需獲知對象的具體類型,只需要知道對象所具有的接口
- 減少系統(tǒng)中各部分的依賴關系宵统,從而實現“高內聚晕讲、松耦合”的類型設計方案