更新時(shí)間:2022-03-31 09:56:36 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1406次
Java設(shè)計(jì)模式的六大原則的定義是什么呢?小編來告訴大家。

定義:班級(jí)變更的原因只有一個(gè)
優(yōu)勢(shì) :
類復(fù)雜度降低
可讀性改進(jìn)
易于維護(hù)
修改類引起的風(fēng)險(xiǎn)降低
臨界點(diǎn) :
過多的除法會(huì)導(dǎo)致類的急劇增加,增加系統(tǒng)的復(fù)雜度
定義:對(duì)基類的所有引用必須透明地使用其子類的對(duì)象
優(yōu)勢(shì) :
提高代碼重用
提高代碼可擴(kuò)展性
提高項(xiàng)目的開放性
缺點(diǎn):
記住是侵入式的,只要繼承,就有父類的屬性和方法
降低代碼靈活性,子類比父類有更多的約束
增強(qiáng)耦合,父類的常量/變量/方法發(fā)生變化時(shí),必須考慮對(duì)子類的修改
四定義:
子類可以實(shí)現(xiàn)父類的抽象方法,但不能覆蓋父類的非抽象方法。
子類可以添加自己獨(dú)特的方法。
當(dāng)子類的方法重載父類的方法時(shí),方法前置條件(即方法的參數(shù))比父方法的入?yún)⒁獙捤伞?/p>
當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí),該方法的后置條件(即方法的返回值)比父類更嚴(yán)格。
定義 :
高層模塊不應(yīng)該依賴低層模塊,兩者都依賴于它們的抽象(模塊之間的依賴是通過抽象產(chǎn)生的,實(shí)現(xiàn)類不直接依賴)
抽象不應(yīng)該依賴于細(xì)節(jié)(接口或抽象類不依賴于實(shí)現(xiàn)類)
細(xì)節(jié)可以依賴于抽象(實(shí)現(xiàn)類依賴于接口或抽象類)
處理 :
每個(gè)類都應(yīng)該有一個(gè)接口或抽象類
變量的表面類型應(yīng)該是接口或抽象類
任何類都不應(yīng)該從具體類派生
盡量不要重復(fù)基類的實(shí)現(xiàn)方法
與里氏替換原理結(jié)合使用
定義:客戶端不應(yīng)該依賴不需要的接口,類之間的依賴應(yīng)該基于最小的接口
四定義:
接口要盡量小,不要有臃腫的接口
接口應(yīng)該是高度內(nèi)聚的
只提供訪問者需要的方法,每個(gè)接口中沒有子類不能使用但必須實(shí)現(xiàn)的東西,可以拆分接口
接口設(shè)計(jì)限制:設(shè)計(jì)粒度越小,系統(tǒng)越靈活,結(jié)構(gòu)越復(fù)雜,可維護(hù)性降低
處理 :
一個(gè)接口只服務(wù)一個(gè)子模塊或業(yè)務(wù)邏輯
盡量壓縮接口中的方法,保證有用,避免臃腫
嘗試修改被污染的接口,如果修改風(fēng)險(xiǎn)高,使用適配器模式轉(zhuǎn)換處理
了解有關(guān)業(yè)務(wù)邏輯的更多信息
定義:一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解(低耦合)
意義 :
方法盡量不引入類中不存在的對(duì)象
盡量不要暴露太多的公共方法和無定形的公共變量,盡量?jī)?nèi)向
如果一個(gè)方法在這個(gè)類中,它不會(huì)增加類之間的關(guān)系,對(duì)這個(gè)類沒有負(fù)面影響,可以放在這個(gè)類中
概括 :
核心概念是類間解耦,低耦合。負(fù)面影響是有很多中轉(zhuǎn)或跳轉(zhuǎn)類,導(dǎo)致系統(tǒng)復(fù)雜度增加,也給維護(hù)帶來困難。需要反復(fù)權(quán)衡,結(jié)構(gòu)清晰,高內(nèi)聚低耦合。
如果一個(gè)類需要跳轉(zhuǎn)兩次以上才能訪問另一個(gè)類,就需要想辦法重構(gòu)。
定義:就是在一個(gè)新對(duì)象中使用一些已有的對(duì)象,使其成為新對(duì)象的一部分。新對(duì)象通過委托重用現(xiàn)有功能。
優(yōu)勢(shì) :
使用對(duì)象的組合/聚合將有助于保持每個(gè)類的封裝,并專注于單個(gè)任務(wù)。這樣,類和集成層次結(jié)構(gòu)將保持較小,并且不太可能成長(zhǎng)為無法控制的龐然大物
缺點(diǎn):
以這種方式重用構(gòu)建的系統(tǒng)將有更多的對(duì)象需要管理;為了將多個(gè)不同的對(duì)象用作復(fù)合塊,必須仔細(xì)定義接口
簡(jiǎn)而言之:盡量使用組合優(yōu)先/聚合的方式,而不是使用繼承
通過上述介紹相信大家對(duì)設(shè)計(jì)模式的六大原則的定義已經(jīng)有所了解,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容細(xì)致全面,由淺到深,適合沒有基礎(chǔ)的小白學(xué)習(xí),希望對(duì)大家能夠有所幫助哦。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)