设计模式-设计原则(Design Principle)
本文由@呆代待殆原創(chuàng),轉(zhuǎn)載請注明出處。
?
寫在前面:所謂設(shè)計原則并不是一定要遵守的法則,只是一種建議,因?yàn)楸3诌@些原則本身會有一定代價,若是這些代價超過了帶來的好處就得不償失了,所以一切還是以簡單為準(zhǔn)。
?
原則一:分離變與不變的部分。
定義:找出代碼中會發(fā)生變化的部分,并將其和保持不變的部分分離。
作用:提升可維護(hù)性。將會變化的部分分離后,在以后的修改過程中就不會影響到其他不變的部分。
?
原則二:面向接口編程。
定義:面向接口編程,而不是面向某個實(shí)現(xiàn)。
作用:降低耦合。這里的接口有多個含義,并不僅僅只java中的interface,更準(zhǔn)確的表達(dá)應(yīng)該是面向超類編程。這樣的話只要接口不發(fā)生改變,依賴接口的部分就不用發(fā)生改變,我們都知道,接口發(fā)生改變的可能性比接口的某個實(shí)現(xiàn)發(fā)生改變的可能性小很多。
?
原則三:開閉原則(The Open-Closed Principle)。
定義:類需要支持?jǐn)U展而拒絕修改。
作用:增加可修改性和可維護(hù)性。
?
原則四:Dependency Inversion Principle(依賴倒置原則,之后簡稱DIP)。
定義:不要依賴實(shí)例(concrete classes)編程,依賴抽象(abstractions,指依賴抽象類和接口)。
關(guān)于倒置(inversion)的理解:通常我們的高層組件都會依賴于低層組件(指某個低層具體實(shí)例類),而DIP是不允許這樣的,在DIP的指導(dǎo)下,我們會創(chuàng)建一個抽象類,讓它處于高層組件與低層組件之間,打破這種依賴,這時不僅高層組件會依賴于這個抽象類,低層組件會依賴于這個所處位置比它高層的抽象類,所以會出現(xiàn)“倒置”這個說法。
此原則的幾個指導(dǎo)方針(并不是一定要準(zhǔn)守,只是在開發(fā)的時候當(dāng)成一個參考而已)
1,不要有指向一個具體實(shí)例(concrete class)的引用。
2,不要有從具體實(shí)例(concrete class)派生出的類。
3,不要覆蓋父類中已經(jīng)實(shí)現(xiàn)的方法。
4,低層組件盡量都要有共同的接口或者抽象類。
與原則二的區(qū)別:比原則二更加嚴(yán)格,它增加了高層組件不能直接依賴低層組件這一條。
作用:降低耦合。只要定義好了高層組件和低層組件間的接口,他們的開發(fā)可以同步進(jìn)行,在多人開發(fā)中的意義也很大。
?
原則五:最少至少原則(The Principle of Least Knowledge)[又稱迪米特法則(Law of Demeter)]
定義:一個對象應(yīng)該對其他對象保持最少的了解。
此原則的幾個指導(dǎo)方針
1,只調(diào)用自己的成員方法。
2,只調(diào)用當(dāng)做參數(shù)傳遞進(jìn)來的對象的成員方法。
3,只調(diào)用自己的方法實(shí)例化的對象的成員方法。
4,只調(diào)用組合對象(成員變量的一部分)的成員方法。
作用:降低復(fù)雜度,提高可維護(hù)性。
?
原則六:好萊塢原則(The Hollywood Principle)
定義:別調(diào)用我們,我們會調(diào)用你。
作用:防止依賴腐敗(dependency rot),當(dāng)高層組件和低層組件組件相互依賴的時候,通常組件之間的關(guān)系會過于復(fù)雜,這時,就可以運(yùn)用這個原則,拒絕低層組件調(diào)用高層組件,而是等待高層組件來調(diào)用低層組件,這樣可以降低編程的復(fù)雜程度。
?
原則七: 單一責(zé)任原則(Single Responsibility)
定義:一個類只有一個引起變化的原因
作用:高內(nèi)聚,提高可維護(hù)性。每個類只有一個職責(zé),只有這個職責(zé)發(fā)生改變的時候這個類才應(yīng)該被修改。
?
?
參考資料:《Head First 設(shè)計模式》
?
轉(zhuǎn)載于:https://www.cnblogs.com/coffeeSS/p/5413512.html
總結(jié)
以上是生活随笔為你收集整理的设计模式-设计原则(Design Principle)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cocos2d-x 3.0游戏开发之虚拟
- 下一篇: 模块(序列化(jsonpickle)+X