溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java中有哪些設(shè)計(jì)原則

發(fā)布時間:2021-05-13 16:19:14 來源:億速云 閱讀:115 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章給大家分享的是有關(guān)Java中有哪些設(shè)計(jì)原則,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

一、單一職責(zé)原則(SingleResponsibilityPrinciple,SRP)

定義:一個類只負(fù)責(zé)一個功能領(lǐng)域中的相應(yīng)職責(zé)

理解:該設(shè)計(jì)模式很好理解,就是一個類只實(shí)現(xiàn)某個領(lǐng)域的相應(yīng)職責(zé),這樣有利于進(jìn)行調(diào)用。就比如在Java開發(fā)時,設(shè)計(jì)controller、service、manager、dao層一樣的道理,進(jìn)行分層分工,再和生活貼近一點(diǎn),人們在社會中也是更加各有所長進(jìn)行職責(zé)分工協(xié)調(diào)更好地運(yùn)行社會。

例子:可能在剛開始學(xué)習(xí)Java進(jìn)行課設(shè)設(shè)計(jì)時,可能會將DB連接,圖表展示都放在一個類里面,這樣導(dǎo)致該類就比較冗雜。為了遵循該原則應(yīng)該將其分解為DBUtil和ChartDisplay兩個類。

二、開閉原則(Open-ClosedPrinciple,OCP)

定義:軟件實(shí)體應(yīng)對擴(kuò)展開放,而對修改關(guān)閉

理解:剛開始看到該原則定義,其實(shí)有點(diǎn)懵,然后結(jié)合例子就很容易明白了。其意思就是當(dāng)該類需要進(jìn)行拓展(比如說添加一個新功能(方法))是可以的,但進(jìn)行修改某功能則不可以。怎么實(shí)現(xiàn)呢?那就得看下個里氏代換原則了。不過目的還是為了拓展,維護(hù)。

例子:假設(shè)需要展示不同圖表,你采用傳入type參數(shù)去控制展示何種圖表,那么當(dāng)你拓展時,就需要添加新的判斷比較,進(jìn)行了修改,破壞了原類。不符合該原則,改進(jìn)辦法,使用抽象類或者接口進(jìn)行拓展。

三、里氏代換原則(LiskovSubstitutionPrinciple,LSP)

定義:所有引用基類對象的地方能夠透明地使用其子類的對象

理解:簡單地說,就是接口(基類、抽象類)進(jìn)行定義,子類進(jìn)行動態(tài)實(shí)現(xiàn)。便于(2)的原則實(shí)現(xiàn)。

例子:以下如service包中進(jìn)行接口定義,然后…impl實(shí)現(xiàn),再在controller中進(jìn)行基類接口聲明定義,最后在實(shí)際使用中進(jìn)行動態(tài)調(diào)用。

Java中有哪些設(shè)計(jì)原則
Java中有哪些設(shè)計(jì)原則

四、依賴倒換原則(DependenceInversionPrinciple,DIP)

定義:抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象

理解:也就是面向接口編程,應(yīng)該先進(jìn)行接口定義該業(yè)務(wù)需要哪些方法,也可以適當(dāng)書寫步驟,然后再在實(shí)現(xiàn)類里面進(jìn)行細(xì)節(jié)完善。

例子:如下,就是先把接口寫好(明確業(yè)務(wù)),然后實(shí)現(xiàn)類進(jìn)行具體實(shí)現(xiàn)。

Java中有哪些設(shè)計(jì)原則

五、接口隔離原則(InterfaceSegregationPrinciple,ISP)

定義:使用多個專門的接口,而不使用單一的總接口

理解:和單一原則大同小異,就是針對的對象不同,一個是類一個是接口。在此方面深有感觸,剛開始時進(jìn)行編寫接口基本上按一個功能模塊(比如說登錄一模塊,支付一模塊,新聞一模塊)一個接口,后面維護(hù)時發(fā)現(xiàn)找相應(yīng)具體功能點(diǎn)就比較麻煩了,而且實(shí)現(xiàn)類里面十分龐雜(幾百行代碼看重都頭疼)。

六、合成復(fù)用原則(CompositeReusePrinciple,CRP)

定義:盡量使用對象組合,而不是繼承來達(dá)到復(fù)用的目的

理解:復(fù)用時應(yīng)該多用關(guān)聯(lián),少用繼承。不過感覺一般習(xí)慣性就關(guān)聯(lián)復(fù)合吧,沒什么好講的。

七、迪米特法則(LawofDemeter,LoD)

定義:一個軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用。

理解:為了避免修改該類后影響其他類(不過IDEA報(bào)錯工具很強(qiáng)大也不要怕哈哈哈。),應(yīng)該讓此類盡可能不與其他類發(fā)生關(guān)聯(lián),主要有其他類構(gòu)造注入,參數(shù)注入,依賴注入等。在設(shè)計(jì)時,多考慮有沒有必要加入引用,是否可以設(shè)計(jì)一個中間類去管理。

java基本數(shù)據(jù)類型有哪些

Java的基本數(shù)據(jù)類型分為:1、整數(shù)類型,用來表示整數(shù)的數(shù)據(jù)類型。2、浮點(diǎn)類型,用來表示小數(shù)的數(shù)據(jù)類型。3、字符類型,字符類型的關(guān)鍵字是“char”。4、布爾類型,是表示邏輯值的基本數(shù)據(jù)類型。

以上就是Java中有哪些設(shè)計(jì)原則,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI