大話設(shè)計(jì)模式- 單一職責(zé)原則、開放-封閉原則、依賴倒置原則、里氏代換原則

1 單一職責(zé)原則
如果一個(gè)類承擔(dān)了過(guò)多的職責(zé),就等于把這些職責(zé)耦合在一起。
如果我們修改其中一個(gè)職責(zé),很有可能會(huì)對(duì)其他職責(zé)造成抑制和破壞。
這種耦合會(huì)導(dǎo)致脆弱的設(shè)計(jì),當(dāng)變化發(fā)生時(shí),設(shè)計(jì)會(huì)遭受到意想不到的破壞ASD。
軟件真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé),并把這些職責(zé)相互分離[ASD]。
那么,我們?cè)趺磁袛嘁粋€(gè)類中有多少種在職責(zé)呢?
如果我們能想到多于一個(gè)的動(dòng)機(jī)去改變一個(gè)類,那這個(gè)類就是具有多于一個(gè)的職責(zé)[ASD]。
此時(shí)我們就應(yīng)該考慮類的職責(zé)分離。
2 開放-封閉原則
3 依賴倒置原則
A: 高層模塊不應(yīng)該依賴底層模塊,二者應(yīng)該都依賴抽象。
B: 抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。
說(shuō)白了,就是要針對(duì)接口編程,不要針對(duì)細(xì)節(jié)編程

我們程序的上層邏輯經(jīng)常會(huì)遇到保存數(shù)據(jù)的需求。我們可以很方便的調(diào)用一些封裝好的第三方庫(kù)X。但我們的保存數(shù)據(jù)的需求不止一個(gè),我們就會(huì)在很多地方調(diào)用X。 如果說(shuō)過(guò)了一段時(shí)間,突然 X 宣布不再維護(hù)或者不再適用我們程序運(yùn)行的系統(tǒng)了,我們?cè)撛趺崔k呢?
我們只能找到所有應(yīng)用X的邏輯,并將他修改T_T。
上面這個(gè)??就是高層模塊依賴底層模塊的典型。同樣的栗子還有日志打印等等。
所以我們需要提供一個(gè)標(biāo)準(zhǔn)的接口中間層,
用她來(lái)實(shí)現(xiàn)高層模塊和X的關(guān)系。讓二者都依賴她。
只要接口是穩(wěn)定的,那么高層或者低層模塊任何一方的更改都是不用擔(dān)心的。二者都能夠在不影響對(duì)方的情況下,很容易的被復(fù)用。
這才是最好的辦法。
4 里氏代換原則:
稍后再更,溜了溜了....