1 單一職責(zé)
一個類應(yīng)該只負責(zé)一個職責(zé)召廷。
2 開閉原則
一個軟件實體應(yīng)當(dāng)對擴展開放矿卑,對修改關(guān)閉柬焕。即軟件實體應(yīng)盡量在不修改原有代碼的情況下進行擴展。
3 里氏替換原則
所有引用基類(父類)的地方必須能透明地使用其子類的對象麻掸。
簡單點說酥夭,一個軟件系統(tǒng)中所有用到一個類的地方都替換成其子類,系統(tǒng)應(yīng)該仍然可以正常工作脊奋。這個原則依賴面向?qū)ο蟮睦^承特性和多態(tài)特性熬北,這個原則我們有意無意中使用的就比較多了。因為一個優(yōu)秀的程序員一定面向抽象(接口)編程的诚隙。
4 依賴倒置原則
抽象不應(yīng)該依賴于細節(jié)讶隐,細節(jié)應(yīng)當(dāng)依賴于抽象。換言之最楷,要針對接口編程整份,而不是針對實現(xiàn)編程。
關(guān)鍵點:
- 高層模塊不應(yīng)該依賴低層模塊籽孙,兩者都應(yīng)該依賴其抽象
- 抽象不應(yīng)該依賴細節(jié)
- 細節(jié)應(yīng)該依賴抽象
5 接口隔離原則
使用多個專門的接口烈评,而不使用單一的總接口,即客戶端不應(yīng)該依賴那些它不需要的接口犯建。
6 迪米特原則
一個軟件實體應(yīng)當(dāng)盡可能少地與其他實體發(fā)生相互作用讲冠。
一個類應(yīng)該對自己需要調(diào)用的類知道得最少,類的內(nèi)部如何實現(xiàn)适瓦、如何復(fù)雜都與調(diào)用者或者依賴者沒關(guān)系竿开,調(diào)用者或者依賴者只需要知道他需要的方法即可,其他的我一概不關(guān)心玻熙。