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