日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java 设计模式原则_Java设计模式的七大原则

發(fā)布時(shí)間:2025/3/8 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 设计模式原则_Java设计模式的七大原则 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

設(shè)計(jì)原則名稱

定??義

使用頻率

單一職責(zé)原則(Single Responsibility Principle, SRP)

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

★★★★☆

開閉原則(Open-Closed Principle, OCP)

軟件實(shí)體應(yīng)對擴(kuò)展開放,而對修改關(guān)閉。開閉原則的關(guān)鍵在于抽象化。

★★★★★

里氏代換原則(Liskov Substitution Principle, LSP)

所有引用基類對象的地方能夠透明地使用其子類的對象【子類不應(yīng)該覆蓋父類的非抽象方法】。里氏代換原則是實(shí)現(xiàn)開閉原則的重要方式之一

★★★★★

依賴倒轉(zhuǎn)原則(Dependence? Inversion Principle, DIP)

抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。是開閉原則的基礎(chǔ)。【可以通過依賴注入的方式實(shí)現(xiàn)】

★★★★★

接口隔離原則(Interface Segregation Principle, ISP)

使用多個(gè)專門的接口,而不使用單一的總接口。【需要把控好接口的粒度】

★★☆☆☆

合成復(fù)用原則(Composite Reuse Principle, CRP)

復(fù)用時(shí)要盡量使用組合/聚合關(guān)系(關(guān)聯(lián)關(guān)系),少用繼承。

★★★★☆

迪米特法則(最少知道)(Law of Demeter, LoD)

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

★★★☆☆

里氏代換原則

里氏代換原則是對“開-閉”原則的補(bǔ)充。實(shí)現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化。而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。需要注意以下幾點(diǎn):

(1)子類的所有方法必須在父類中聲明,或子類必須實(shí)現(xiàn)父類中聲明的所有方法。

(2)盡量把父類設(shè)計(jì)為抽象類或者接口,讓子類繼承父類或?qū)崿F(xiàn)父接口,并實(shí)現(xiàn)在父類中聲明的方法。

(3)子類不應(yīng)該覆蓋父類的非抽象方法(可以重載,但一定要調(diào)父類的方法)。

依賴倒轉(zhuǎn)原則

在實(shí)現(xiàn)依賴倒轉(zhuǎn)原則時(shí),我們需要針對抽象層編程,而將具體類的對象通過依賴注入的方式注入到其他對象中,依賴注入是指當(dāng)一個(gè)對象要與其他對象發(fā)生依賴關(guān)系時(shí),通過抽象來注入所依賴的對象。常用的注入方式有三種,分別是:構(gòu)造注入,設(shè)值注入(Setter注入)和接口注入。

(1)構(gòu)造注入是指通過構(gòu)造函數(shù)來傳入具體類的對象。

(2)設(shè)值注入是指通過Setter方法來傳入具體類的對象。

(3)接口注入是指通過在接口中聲明的業(yè)務(wù)方法來傳入具體類的對象。

這些方法在定義時(shí)使用的是抽象類型,在運(yùn)行時(shí)再傳入具體類型的對象,由子類對象來覆蓋父類對象。

開閉原則是目標(biāo),里氏代換原則是基礎(chǔ),依賴倒轉(zhuǎn)原則是手段。

接口隔離原則

(1)在使用接口隔離原則時(shí),我們需要注意控制接口的粒度。

(2)接口不能太小。如果太小會導(dǎo)致系統(tǒng)中接口泛濫,不利于維護(hù);

(3)接口也不能太大。太大的接口將違背接口隔離原則,靈活性較差,使用起來很不方便。

一般而言,接口中僅包含為某一類用戶定制的方法即可,不應(yīng)該強(qiáng)迫客戶依賴于那些它們不用的方法。

合成復(fù)用原則

通過繼承來進(jìn)行復(fù)用的主要問題在于繼承復(fù)用會破壞系統(tǒng)的封裝性。因?yàn)槔^承會將基類的實(shí)現(xiàn)細(xì)節(jié)暴露給子類,由于基類的內(nèi)部細(xì)節(jié)通常對子類來說是可見的,所以這種復(fù)用又稱“白箱”復(fù)用,如果基類發(fā)生改變,那么子類的實(shí)現(xiàn)也不得不發(fā)生改變;從基類繼承而來的實(shí)現(xiàn)是靜態(tài)的,不可能在運(yùn)行時(shí)發(fā)生改變,沒有足夠的靈活性。

一般而言,如果兩個(gè)類之間是“Has-A”的關(guān)系應(yīng)使用組合或聚合,如果是“Is-A”關(guān)系可使用繼承。"Is-A"是嚴(yán)格的分類學(xué)意義上的定義,意思是一個(gè)類是另一個(gè)類的"一種";而"Has-A"則不同,它表示某一個(gè)角色具有某一項(xiàng)責(zé)任。

Java設(shè)計(jì)模式詳解

項(xiàng)目源碼

微信公眾號

> 更多資訊內(nèi)容,歡迎掃描關(guān)注我的個(gè)人微信公眾號!

總結(jié)

以上是生活随笔為你收集整理的java 设计模式原则_Java设计模式的七大原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。