簡介
在編程技術(shù)里,靈魂之上的東西某過于設(shè)計(jì)模式。設(shè)計(jì)模式之上的東西其實(shí)就是純粹的準(zhǔn)則?;跍?zhǔn)則之上的代碼才有靈魂可言,經(jīng)得起推敲,也經(jīng)得起考驗(yàn)。
通俗,設(shè)計(jì)模式其實(shí)很多,從個(gè)人的角度而言 原則凌駕于設(shè)計(jì)模式之上。 所以沒有必要去死記設(shè)計(jì)模式。每個(gè)設(shè)計(jì)模式,都是基于某寫特定的原則解決特定問題而產(chǎn)生的。 所以原則比設(shè)計(jì)模式重要,駕馭了原則,其實(shí)就可以拋開設(shè)計(jì)模式了。
本篇于在于引導(dǎo), 所以不夠詳細(xì)。大家可以自己詳細(xì)去理解和體會(huì)每個(gè)原則。 大神可以繞過。
本篇的主要目的在于, 希望那些只知道實(shí)現(xiàn)而不懂設(shè)計(jì)的程序員,可以更深去領(lǐng)會(huì)如何設(shè)計(jì)代碼。 代碼質(zhì)量不在于實(shí)現(xiàn),而在于設(shè)計(jì)。 代碼質(zhì)量的核心目的是易維護(hù),而不是實(shí)現(xiàn)了多么牛逼的功能。
單一職責(zé)原則
定義
就一個(gè)類而言,應(yīng)當(dāng)僅有一個(gè)引起它變化的原因。
說明
所謂單一職責(zé)就是一個(gè)類設(shè)計(jì)之初它所在職責(zé)就是確定的,而且是某一個(gè)方面的。
類的職責(zé)是清晰的體現(xiàn)在某個(gè)方面,而不是做的事情很多,無法概況。
比喻
就是員工的職責(zé)分配,單一的而不是交叉的。這樣才能把事情做好。
開放封閉原則
定義
軟件實(shí)體(類,模塊,函數(shù))應(yīng)該是可以擴(kuò)展,但是不可修改
說明
所謂擴(kuò)展就是開放接口,開放抽象。所謂不可修改,就是實(shí)體在擴(kuò)展之上不需要去調(diào)整代碼。
擴(kuò)展的原則就一點(diǎn)把不可確定的東西抽象,或者是不可固定的東西抽象。讓具體的對象去實(shí)現(xiàn)。主要體現(xiàn)在以下幾個(gè)方面。
- 可注冊
- 可回調(diào)
- 可配置
依賴倒轉(zhuǎn)原則
定義
- 高層模塊不應(yīng)該依賴低層模塊。兩個(gè)都應(yīng)該依賴抽象
- 抽象不應(yīng)該依賴細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴抽象。
說明
這個(gè)主要還是抽象的問題, 避免出現(xiàn)互相依賴,或者不必要的依賴。 可以引入第三方那就是抽象。
這個(gè)是對依賴性的約束。
迪米特法則
定義
如果兩個(gè)類不必彼此直接通訊,那么這兩個(gè)類不應(yīng)當(dāng)發(fā)生直接的相互作用。如果其中一個(gè)類要調(diào)用另一個(gè)類的話。可以通過第三方轉(zhuǎn)發(fā)這個(gè)調(diào)用。
說明
核心目標(biāo)就是為了避免互相調(diào)用。引入第三方類進(jìn)行整合。
這個(gè)是對整合性約束。
總結(jié)
主要基于核心的原則進(jìn)行編碼,我相信你的代碼質(zhì)量可以上一個(gè)臺(tái)階。
本章篇幅很小,也沒有很細(xì)節(jié)的去說明。如果有時(shí)間可以逐一針對性的講解,希望大家諒解。