在編程領(lǐng)域,編程的設(shè)計(jì)原則有很多,但是對(duì)于一些不了解的人來說,他們不知道設(shè)計(jì)模式的原則有哪些?其實(shí)設(shè)計(jì)模式的有六項(xiàng)包括:?jiǎn)我还δ?,依賴性反轉(zhuǎn)原理,Richter替代,接口隔離,迪米特法則以及開閉原則,早起是21世紀(jì)初引入的,指的是對(duì)象的六項(xiàng)基本原理編程,當(dāng)這六項(xiàng)基本原則在一起應(yīng)用時(shí),即可使程序員更有可能開發(fā)易于維護(hù)和擴(kuò)展軟件的系統(tǒng)。
1、單一職責(zé)原則
單一職責(zé)原則,簡(jiǎn)稱是SRP。簡(jiǎn)單解釋就是,一個(gè)方法盡可能做一件事情,一般來說不應(yīng)該讓一個(gè)方法承擔(dān)多個(gè)職責(zé)。單一職責(zé)原則的定義是:應(yīng)該有且僅有一個(gè)原因引起類的變更。這個(gè)設(shè)計(jì)模式的原則提出了一個(gè)編寫程序的標(biāo)準(zhǔn),用“職責(zé)”或“變化原因”來衡量接口或設(shè)計(jì)是否優(yōu)良,但是“職責(zé)”跟“變化原因”都是不好度量的,要“因地制宜”。單一職責(zé)適用于接口、類,同時(shí)也適用于方法,也就是說,一個(gè)方法盡可能做一件事情,一般來說不應(yīng)該讓一個(gè)方法承擔(dān)多個(gè)職責(zé)。
2、依賴倒置原則
這一設(shè)計(jì)模式的原則是指細(xì)節(jié)依賴抽象,低層依賴高層。依賴倒置原則的原始定義包含了三層含義:高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象;抽象不應(yīng)該依賴細(xì)節(jié);細(xì)節(jié)應(yīng)該依賴抽象。這一原則在Java語言中的表現(xiàn)就是:模塊間的依賴通過抽象發(fā)生,實(shí)現(xiàn)類之間不發(fā)生直接的依賴關(guān)系,其依賴關(guān)系是通過接口或抽象類產(chǎn)生的;接口或抽象類不依賴于實(shí)現(xiàn)類;實(shí)現(xiàn)類依賴接口或抽象類。
3、里氏替換原則
里氏替換原則,即子類應(yīng)該能替換掉它的父類。它為良好的繼承定義了一個(gè)規(guī)范,一句簡(jiǎn)單的定義包含了4層含義:子類必須完全實(shí)現(xiàn)父類的方法;子類可以有自己的個(gè)性;覆蓋或?qū)崿F(xiàn)父類的方法時(shí)輸入?yún)?shù)可以被放大;覆寫或?qū)崿F(xiàn)父類的方法時(shí)輸出結(jié)果可以被縮小。即如果父類的一個(gè)方法的返回值是一個(gè)類型T,子類的相同方法(重載或覆寫)的返回值為S,那么里氏替換原則就要求S必須小于等于T,也就是說,要么S和T是同一個(gè)類型,要么S是T的子類。
4、接口隔離原則
接口隔離原則講的是,應(yīng)該盡量建立單一接口,不要建立臃腫的接口,接口應(yīng)該盡量細(xì)化。接口分離的手段主要有以下兩種:委托分離,通過增加一個(gè)新的類型來委托客戶的請(qǐng)求,隔離客戶和接口的直接依賴,但會(huì)增加系統(tǒng)開銷;多重繼承分離,通過接口多繼承來實(shí)現(xiàn)客戶需求。
5、迪米特法則
迪米特法則是指一個(gè)類應(yīng)該對(duì)自己需要耦合或調(diào)用的類知道得最少。迪米特法則又叫最少知道原則,通俗地講,一個(gè)類應(yīng)該對(duì)自己需要耦合或調(diào)用的類知道得最少。一個(gè)類公開的public屬性或方法越多,修改時(shí)涉及的面也就越大,變更引起的風(fēng)險(xiǎn)擴(kuò)散也就越大。在設(shè)計(jì)時(shí)需要反復(fù)衡量,是否可以減少public方法和屬性,是否可以修改為private、package-private、protected等訪問權(quán)限,是否可以加上final關(guān)鍵字等。迪米特法則要求類盡量不要對(duì)外公布太多的public方法和非靜態(tài)的public變量,盡量?jī)?nèi)斂,多使用private、package-private、protected等訪問權(quán)限。
6、開閉原則
開閉原則要求盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來完成變化。開閉原則的定義:一個(gè)軟件實(shí)體如類、模塊和函數(shù)應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。一個(gè)軟件產(chǎn)品只要在生命期內(nèi),都會(huì)發(fā)生變化,既然變化是一個(gè)既定的事實(shí),我們應(yīng)該在設(shè)計(jì)時(shí)盡量適應(yīng)這些變化,以提高項(xiàng)目的穩(wěn)定性和靈活性。開閉原則要求盡量通過擴(kuò)展軟件實(shí)體的行為來實(shí)現(xiàn)變化,而不是通過修改已有的代碼來完成變化。如何做到開閉原則:抽象、封裝。
以上即是關(guān)于設(shè)計(jì)模式的原則有哪些的全部?jī)?nèi)容介紹,想了解更多關(guān)于產(chǎn)品設(shè)計(jì)的原則,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。