您好,歡迎來(lái)到賦能網(wǎng)!

Java培訓(xùn)分享:應(yīng)用開(kāi)發(fā)SOLID設(shè)計(jì)原則了解多少

賦能網(wǎng) 2023-05-10 71


       SOLID指的是面向?qū)ο缶幊讨械奈鍡l設(shè)計(jì)原則,旨在減少代碼腐爛,提高軟件的價(jià)值、功能和可維護(hù)性。堅(jiān)實(shí)的原則有助于用戶(hù)開(kāi)發(fā)耦合較少的代碼。如果代碼是緊密耦合的,那么一組類(lèi)是相互依賴(lài)的。為了更好的可維護(hù)性和可讀性,應(yīng)該避免這種情況。

1.單一責(zé)任原則(SRP)
       單一責(zé)任原則(SRP)規(guī)定,一個(gè)類(lèi)改變的原因不應(yīng)超過(guò)一個(gè)。這意味著代碼中的每個(gè)類(lèi)或類(lèi)似結(jié)構(gòu)應(yīng)該只有一項(xiàng)任務(wù)要做。類(lèi)的每件事都應(yīng)該與這個(gè)單一的目的相關(guān),這并不意味著類(lèi)應(yīng)該只包含一個(gè)方法或?qū)傩浴?/span>
      可以有很多成員,只要他們與單一責(zé)任相關(guān)。可能是,當(dāng)發(fā)生更改的一個(gè)原因時(shí),類(lèi)的多個(gè)成員可能需要修改,也可能是多個(gè)類(lèi)需要更新。混合責(zé)任也使類(lèi)更難理解和測(cè)試,降低了凝聚力。解決這一問(wèn)題的最簡(jiǎn)單方法是將類(lèi)劃分為三個(gè)不同的類(lèi),每個(gè)類(lèi)只有一個(gè)職責(zé):數(shù)據(jù)庫(kù)訪問(wèn)、計(jì)算薪酬和報(bào)告,所有這些都是分開(kāi)的。
2.開(kāi)放-封閉原則(OCP)
       開(kāi)放-封閉原則(OCP)規(guī)定類(lèi)應(yīng)該為擴(kuò)展而打開(kāi),但為修改而關(guān)閉?!伴_(kāi)放擴(kuò)展”意味著你應(yīng)該設(shè)計(jì)類(lèi),以便在生成新需求時(shí)添加新功能。“為修改而關(guān)閉”意味著一旦開(kāi)發(fā)了一個(gè)類(lèi),就不應(yīng)該修改它,除非是為了糾正錯(cuò)誤。
        該原則的這兩部分似乎相互矛盾。但是,如果正確地構(gòu)造類(lèi)及其依賴(lài)項(xiàng),則可以添加功能,而無(wú)需編輯現(xiàn)有源代碼。通常,你通過(guò)引用依賴(lài)項(xiàng)的抽象(例如接口或抽象類(lèi))而不是使用具體類(lèi)來(lái)實(shí)現(xiàn)這一點(diǎn)??梢酝ㄟ^(guò)創(chuàng)建實(shí)現(xiàn)接口的新類(lèi)來(lái)添加功能。將OCP應(yīng)用到項(xiàng)目中可以限制在編寫(xiě)、測(cè)試和調(diào)試源代碼后更改源代碼的需要。這降低了在現(xiàn)有代碼中引入新錯(cuò)誤的風(fēng)險(xiǎn),從而產(chǎn)生更健壯的軟件。
3.Liskov替換原則(LSP)

       Liskov替換原則(LSP)適用于繼承層次結(jié)構(gòu),指定你應(yīng)該設(shè)計(jì)類(lèi),以便在客戶(hù)端不知道更改的情況下用子類(lèi)替換客戶(hù)端依賴(lài)項(xiàng)。因此,所有子類(lèi)的操作方式都必須與其基類(lèi)相同。子類(lèi)的特定功能可能不同,但必須符合基類(lèi)的預(yù)期行為。要成為真正的行為子類(lèi)型,子類(lèi)不僅必須實(shí)現(xiàn)基類(lèi)的方法和屬性,還必須符合其隱含的行為。

       通常,如果超類(lèi)型的子類(lèi)型做了超類(lèi)型的客戶(hù)機(jī)不期望的事情,那么這違反了LSP。想象一個(gè)派生類(lèi)拋出一個(gè)超類(lèi)沒(méi)有拋出的異常,或者如果一個(gè)派生類(lèi)有一些意外的副作用。基本上,派生類(lèi)的性能不應(yīng)該低于基類(lèi)。

       違反LSP的典型示例是從矩形類(lèi)派生的方形類(lèi)。Square類(lèi)始終假定寬度與高度相等。如果在預(yù)期為矩形的上下文中使用正方形對(duì)象,則可能會(huì)發(fā)生意外行為,因?yàn)椴荒?或者更確切地說(shuō)不應(yīng)該)單獨(dú)修改正方形的尺寸。
4.接口隔離原則(ISP)
       接口隔離原則(ISP)規(guī)定,不應(yīng)強(qiáng)迫客戶(hù)依賴(lài)他們不使用的接口成員。當(dāng)我們有非內(nèi)聚接口時(shí),ISP引導(dǎo)我們創(chuàng)建多個(gè)更小的內(nèi)聚接口。應(yīng)用ISP時(shí),類(lèi)及其依賴(lài)項(xiàng)使用緊密關(guān)注的接口進(jìn)行通信,從而最大限度地減少對(duì)未使用成員的依賴(lài),并相應(yīng)地減少耦合。更小的接口更容易實(shí)現(xiàn),提高了靈活性和重用的可能性。由于共享這些接口的類(lèi)越來(lái)越少,因此響應(yīng)接口修改所需的更改數(shù)量也會(huì)減少,從而提高了健壯性。
5.依賴(lài)倒置原則(DIP)
       依賴(lài)倒置原則(DIP)規(guī)定高級(jí)模塊不應(yīng)依賴(lài)于低級(jí)模塊;它們應(yīng)該依賴(lài)于抽象。其次,抽象不應(yīng)依賴(lài)于細(xì)節(jié);細(xì)節(jié)應(yīng)該取決于抽象。我們的想法是將類(lèi)隔離在它所依賴(lài)的抽象所形成的邊界之后。如果這些抽象背后的所有細(xì)節(jié)都發(fā)生了變化,那么我們的類(lèi)仍然是安全的。這有助于保持低耦合,使我們的設(shè)計(jì)更易于更改。DIP還允許我們單獨(dú)測(cè)試事物。這些原則提供了一個(gè)有價(jià)值的標(biāo)準(zhǔn),指導(dǎo)開(kāi)發(fā)人員遠(yuǎn)離這種“代碼腐朽”,轉(zhuǎn)而構(gòu)建為客戶(hù)提供持久價(jià)值并為從事項(xiàng)目的未來(lái)開(kāi)發(fā)人員提供理智的應(yīng)用程序。

  想了解更多相關(guān)資訊請(qǐng)關(guān)注java培訓(xùn)頻道-查看更多,了解相關(guān)專(zhuān)業(yè)課程信息您可在線(xiàn)咨詢(xún)也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注賦能網(wǎng)了解更多:4008-569-579

本文鏈接:

本文章“Java培訓(xùn)分享:應(yīng)用開(kāi)發(fā)SOLID設(shè)計(jì)原則了解多少”已幫助 71 人

免責(zé)聲明:本信息由用戶(hù)發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢(xún)熱線(xiàn):4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: