
SOLID指的是面向對象編程中的五條設計原則,旨在減少代碼腐爛,提高軟件的價值、功能和可維護性。堅實的原則有助于用戶開發耦合較少的代碼。如果代碼是緊密耦合的,那么一組類是相互依賴的。為了更好的可維護性和可讀性,應該避免這種情況。
1.單一責任原則(SRP)
單一責任原則(SRP)規定,一個類改變的原因不應超過一個。這意味著代碼中的每個類或類似結構應該只有一項任務要做。類的每件事都應該與這個單一的目的相關,這并不意味著類應該只包含一個方法或屬性。
可以有很多成員,只要他們與單一責任相關?赡苁,當發生更改的一個原因時,類的多個成員可能需要修改,也可能是多個類需要更新;旌县熑我彩诡惛y理解和測試,降低了凝聚力。解決這一問題的最簡單方法是將類劃分為三個不同的類,每個類只有一個職責:數據庫訪問、計算薪酬和報告,所有這些都是分開的。
2.開放-封閉原則(OCP)
開放-封閉原則(OCP)規定類應該為擴展而打開,但為修改而關閉。“開放擴展”意味著你應該設計類,以便在生成新需求時添加新功能。“為修改而關閉”意味著一旦開發了一個類,就不應該修改它,除非是為了糾正錯誤。
該原則的這兩部分似乎相互矛盾。但是,如果正確地構造類及其依賴項,則可以添加功能,而無需編輯現有源代碼。通常,你通過引用依賴項的抽象(例如接口或抽象類)而不是使用具體類來實現這一點?梢酝ㄟ^創建實現接口的新類來添加功能。將OCP應用到項目中可以限制在編寫、測試和調試源代碼后更改源代碼的需要。這降低了在現有代碼中引入新錯誤的風險,從而產生更健壯的軟件。
3.Liskov替換原則(LSP)
Liskov替換原則(LSP)適用于繼承層次結構,指定你應該設計類,以便在客戶端不知道更改的情況下用子類替換客戶端依賴項。因此,所有子類的操作方式都必須與其基類相同。子類的特定功能可能不同,但必須符合基類的預期行為。要成為真正的行為子類型,子類不僅必須實現基類的方法和屬性,還必須符合其隱含的行為。
通常,如果超類型的子類型做了超類型的客戶機不期望的事情,那么這違反了LSP。想象一個派生類拋出一個超類沒有拋出的異常,或者如果一個派生類有一些意外的副作用;旧,派生類的性能不應該低于基類。
違反LSP的典型示例是從矩形類派生的方形類。Square類始終假定寬度與高度相等。如果在預期為矩形的上下文中使用正方形對象,則可能會發生意外行為,因為不能(或者更確切地說不應該)單獨修改正方形的尺寸。
4.接口隔離原則(ISP)
接口隔離原則(ISP)規定,不應強迫客戶依賴他們不使用的接口成員。當我們有非內聚接口時,ISP引導我們創建多個更小的內聚接口。應用ISP時,類及其依賴項使用緊密關注的接口進行通信,從而最大限度地減少對未使用成員的依賴,并相應地減少耦合。更小的接口更容易實現,提高了靈活性和重用的可能性。由于共享這些接口的類越來越少,因此響應接口修改所需的更改數量也會減少,從而提高了健壯性。
5.依賴倒置原則(DIP)
依賴倒置原則(DIP)規定高級模塊不應依賴于低級模塊;它們應該依賴于抽象。其次,抽象不應依賴于細節;細節應該取決于抽象。我們的想法是將類隔離在它所依賴的抽象所形成的邊界之后。如果這些抽象背后的所有細節都發生了變化,那么我們的類仍然是安全的。這有助于保持低耦合,使我們的設計更易于更改。DIP還允許我們單獨測試事物。這些原則提供了一個有價值的標準,指導開發人員遠離這種“代碼腐朽”,轉而構建為客戶提供持久價值并為從事項目的未來開發人員提供理智的應用程序。 注:尊重原創文章,轉載請注明出處和鏈接 http://www.hebeijilong.cn/news-id-15059.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注java培訓頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050