一句话评论设计模式六大原则--转
? 原則,故名思議則是本質(zhì)的意思。所謂擒賊先擒王,研究設(shè)計(jì)模式自然要先了解設(shè)計(jì)原則,所有的模式都是在這些原則的基礎(chǔ)之上發(fā)展起來的,有的是側(cè)重一個(gè),有的是多個(gè)都有所涉及??赐暝O(shè)計(jì)模式之后,我感覺到每個(gè)模式都有這些原則的影子,還滲透著面向?qū)ο蟮娜髮傩?#xff0c;也覺得這些原則也都有相通之處,,正是有了他們才使我們由代碼工人轉(zhuǎn)為藝術(shù)家。下面我來點(diǎn)評一下六大原則,望各位拍磚:
?
1、單一職責(zé)原則(Single Responsibility Principle,簡稱SRP)
? ? ? 單一職責(zé)原則,就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。如果一個(gè)類承擔(dān)的職責(zé)過多,就等于把這些職責(zé)耦合在一起,一個(gè)職責(zé)的變化可能會(huì)消弱或者一直這個(gè)類完成其他職責(zé)的能力。這種耦合會(huì)導(dǎo)致脆弱的設(shè)計(jì),當(dāng)變化發(fā)生時(shí),設(shè)計(jì)會(huì)遭受到意想不到的破壞。而軟件設(shè)計(jì)真正要做的許多內(nèi)容,就是發(fā)現(xiàn)職責(zé),并把這些職責(zé)相互分離。
?
? ? ? 一句話點(diǎn)評:高內(nèi)聚低耦合的絕佳體現(xiàn),不要亂拉關(guān)系,獨(dú)善其身挺好。
?
2、 開放--封閉原則(The Open-Closed Principle簡稱OCP)
? ? ? ?開放--封閉原則,是說軟件實(shí)體(類、模塊、函數(shù)等等)應(yīng)該可以擴(kuò)展,但是不可以修改。即對于擴(kuò)展是開放的,對于更改是封閉的。 我們不可能做到未卜先知,在設(shè)計(jì)的時(shí)候盡可能讓一個(gè)類足夠好,設(shè)計(jì)好了就不要去修改了;不能完全封閉的情況下,當(dāng)發(fā)生變化時(shí),我們就創(chuàng)建抽象來隔離以后發(fā)生的同類變化。
?
? ? ? 一句話點(diǎn)評:開放擴(kuò)展,封閉更改,開合有度是一門藝術(shù)。
?
3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle )
? ? ? 依賴倒轉(zhuǎn)原則,指高層模塊不應(yīng)該依賴低層模塊,兩個(gè)都應(yīng)該依賴抽象;抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象。說白了就是要針對接口編程,不要對實(shí)現(xiàn)編程。舉個(gè)例子:計(jì)算機(jī)硬件中,如果內(nèi)存壞了,那么只需要換一個(gè)內(nèi)存條就可以了,而不需要去換一個(gè)主板,在這里內(nèi)存是一個(gè)接口類,只要符合他的規(guī)格要求就行,無論是那一根。
?
? ? ?一句話點(diǎn)評:搞建筑時(shí)要做設(shè)計(jì)師,而不是磚瓦工,抽象的藍(lán)圖要靠具體的材料一點(diǎn)點(diǎn)實(shí)現(xiàn)。
?
4、里氏代換原則(Liskov Substitution Principle,簡稱LSP)
? ? ?里氏代換原則,子類型必須能夠替換掉他們的父類型。在軟件里面,把父類都替換成其子類,程序的行為不會(huì)發(fā)生變化。正是由于子類型的可替換性才使得使用父類型的模塊在無需修改的情況下就可以擴(kuò)展。
?
? ? ?一句話點(diǎn)評:長輩給了你繼承的權(quán)利就一定要做贍養(yǎng)的義務(wù),把長輩的職責(zé)都要承擔(dān)起來。
?
5、迪米特法則(Law of Demeter)
? ? ??迪米特法則,如果兩個(gè)類不必彼此直接通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用。如果其中一個(gè)類需要調(diào)用另一個(gè)類的某一個(gè)方法時(shí),可以通過第三者轉(zhuǎn)發(fā)這個(gè)調(diào)用。類之間的耦合越弱,就越有利于復(fù)用,一個(gè)處在弱耦合的類被修改,不會(huì)對有關(guān)系的類造成波及。 主要是強(qiáng)調(diào)了類之間的松耦合。
?
? ? ?一句話點(diǎn)評:不要和陌生人說話,若兩國交戰(zhàn)要盡量避免正面沖突,多派使者協(xié)商調(diào)度。
?
6、合成/聚合復(fù)用原則(Composition/Aggregation Principle],簡稱CARP)
? ? ?合成聚合復(fù)用原則,盡量使用合成/聚合,盡量不使用類繼承。合成聚合是“has ?a”的關(guān)系,而繼承是“is ?a”的關(guān)系。由于繼承是一中強(qiáng)耦合的結(jié)構(gòu),父類變,子類必變。所以不是“is? a”關(guān)系,我們一般不要用繼承。優(yōu)先使用合成聚合復(fù)用原則,有助于保持每個(gè)類的封裝,降低繼承的層次。
? ? ?一句話點(diǎn)評:優(yōu)生優(yōu)育,不要盲目繁衍。
轉(zhuǎn)載地址:http://entere.blogchina.com/1240842.html
?
總結(jié)
以上是生活随笔為你收集整理的一句话评论设计模式六大原则--转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4月,mysql
- 下一篇: asp.net ajax控件工具集 Au