- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- 淺談Java設計模式之七大設計原則
學(xué)習設計模式的方法:掌握理解七大原則以及其目的,學(xué)習相應的設計模式(帶著(zhù)設計目的,應用場(chǎng)景(解決什么樣的問(wèn)題),如何實(shí)現(編碼實(shí)現一個(gè)小例子),優(yōu)缺點(diǎn)是什么?等等)
定義:一個(gè)類(lèi)只負責一個(gè)功能領(lǐng)域中的相應職責
理解:該設計模式很好理解,就是一個(gè)類(lèi)只實(shí)現某個(gè)領(lǐng)域的相應職責,這樣有利于進(jìn)行調用。就比如在Java開(kāi)發(fā)時(shí),設計controller、service、manager、dao層一樣的道理,進(jìn)行分層分工,再和生活貼近一點(diǎn),人們在社會(huì )中也是更加各有所長(cháng)進(jìn)行職責分工協(xié)調更好地運行社會(huì )。
例子:可能在剛開(kāi)始學(xué)習Java進(jìn)行課設設計時(shí),可能會(huì )將DB連接,圖表展示都放在一個(gè)類(lèi)里面,這樣導致該類(lèi)就比較冗雜。為了遵循該原則應該將其分解為DBUtil和ChartDisplay兩個(gè)類(lèi)。
定義:軟件實(shí)體應對擴展開(kāi)放,而對修改關(guān)閉
理解:剛開(kāi)始看到該原則定義,其實(shí)有點(diǎn)懵,然后結合例子就很容易明白了。其意思就是當該類(lèi)需要進(jìn)行拓展(比如說(shuō)添加一個(gè)新功能(方法))是可以的,但進(jìn)行修改某功能則不可以。怎么實(shí)現呢?那就得看下個(gè)里氏代換原則了。不過(guò)目的還是為了拓展,維護。
例子:假設需要展示不同圖表,你采用傳入type參數去控制展示何種圖表,那么當你拓展時(shí),就需要添加新的判斷比較,進(jìn)行了修改,破壞了原類(lèi)。不符合該原則,改進(jìn)辦法,使用抽象類(lèi)或者接口進(jìn)行拓展。
定義:所有引用基類(lèi)對象的地方能夠透明地使用其子類(lèi)的對象
理解:簡(jiǎn)單地說(shuō),就是接口(基類(lèi)、抽象類(lèi))進(jìn)行定義,子類(lèi)進(jìn)行動(dòng)態(tài)實(shí)現。便于(2)的原則實(shí)現。
例子:以下如service包中進(jìn)行接口定義,然后…impl實(shí)現,再在controller中進(jìn)行基類(lèi)接口聲明定義,最后在實(shí)際使用中進(jìn)行動(dòng)態(tài)調用。
定義:抽象不應該依賴(lài)于細節,細節應該依賴(lài)于抽象
理解:也就是面向接口編程,應該先進(jìn)行接口定義該業(yè)務(wù)需要哪些方法,也可以適當書(shū)寫(xiě)步驟,然后再在實(shí)現類(lèi)里面進(jìn)行細節完善。
例子:如下,就是先把接口寫(xiě)好(明確業(yè)務(wù)),然后實(shí)現類(lèi)進(jìn)行具體實(shí)現。
定義:使用多個(gè)專(zhuān)門(mén)的接口,而不使用單一的總接口
理解:和單一原則大同小異,就是針對的對象不同,一個(gè)是類(lèi)一個(gè)是接口。在此方面深有感觸,剛開(kāi)始時(shí)進(jìn)行編寫(xiě)接口基本上按一個(gè)功能模塊(比如說(shuō)登錄一模塊,支付一模塊,新聞一模塊)一個(gè)接口,后面維護時(shí)發(fā)現找相應具體功能點(diǎn)就比較麻煩了,而且實(shí)現類(lèi)里面十分龐雜(幾百行代碼看重都頭疼)。
定義:盡量使用對象組合,而不是繼承來(lái)達到復用的目的
理解:復用時(shí)應該多用關(guān)聯(lián),少用繼承。不過(guò)感覺(jué)一般習慣性就關(guān)聯(lián)復合吧,沒(méi)什么好講的。
定義:一個(gè)軟件實(shí)體應當盡可能少地與其他實(shí)體發(fā)生相互作用。
理解:為了避免修改該類(lèi)后影響其他類(lèi)(不過(guò)IDEA報錯工具很強大也不要怕哈哈哈。),應該讓此類(lèi)盡可能不與其他類(lèi)發(fā)生關(guān)聯(lián),主要有其他類(lèi)構造注入,參數注入,依賴(lài)注入等。在設計時(shí),多考慮有沒(méi)有必要加入引用,是否可以設計一個(gè)中間類(lèi)去管理。
到此這篇關(guān)于淺談Java設計模式之七大設計原則的文章就介紹到這了,更多相關(guān)Java七大設計原則內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站