S.O.L.I.D是面向?qū)ο笤O(shè)計(jì)和編程(OOD&OOP)中幾個(gè)重要編碼原則(Programming Priciple)的首字母縮寫。
S 單一責(zé)任原則
O 開放封閉原則
L 里氏替換原則
I 接口分離原則
D 依賴倒置原則
單一責(zé)任原則:
當(dāng)需要修改某個(gè)類的時(shí)候原因有且只有一個(gè)。換句話說(shuō)就是讓一個(gè)類只做一種類型責(zé)任,當(dāng)這個(gè)類需要承當(dāng)其他類型的責(zé)任的時(shí)候,就需要分解這個(gè)類。
開放封閉原則
軟件實(shí)體應(yīng)該是可擴(kuò)展,而不可修改的。也就是說(shuō),對(duì)擴(kuò)展是開放的,而對(duì)修改是封閉的。
里氏替換原則
當(dāng)一個(gè)子類的實(shí)例應(yīng)該能夠替換任何其超類的實(shí)例時(shí),它們之間才具有is-A關(guān)系
依賴倒置原則
1. 高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象
2. 抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象
接口分離原則
不能強(qiáng)迫用戶去依賴那些他們不使用的接口。換句話說(shuō),使用多個(gè)專門的接口比使用單一的總接口總要好。
迪米特原則
又叫作最少知識(shí)原則。 只與你的直接朋友交談,不跟“陌生人”說(shuō)話。其含義是:如果兩個(gè)軟件實(shí)體無(wú)須直接通信,那么就不應(yīng)當(dāng)發(fā)生直接的相互調(diào)用,可以通過(guò)第三方轉(zhuǎn)發(fā)該調(diào)用。其目的是降低類之間的耦合度,提高模塊的相對(duì)獨(dú)立性。
從依賴者的角度來(lái)說(shuō),只依賴應(yīng)該依賴的對(duì)象。
從被依賴者的角度說(shuō),只暴露應(yīng)該暴露的方法。