更新時間:2022-04-18 09:30:44 來源:動力節點 瀏覽961次
盡管學習任何設計原則或模式的最佳方法是通過一個真實的示例并了解違反該設計原則的后果,但本文的主題是為沒有接觸過它的 Java 程序員介紹面向對象的設計原則或者在學習階段。
我們的第一個面向對象的設計原則是 DRY,顧名思義,DRY(不要重復自己)的意思是不要編寫重復的代碼,而是使用Abstraction將常見的東西抽象在一個地方。如果您在兩個以上的地方有一段代碼,請考慮將其設為單獨的方法,或者如果您多次使用硬編碼值,請將它們設為 public final constant。
這種面向對象設計原則的好處在于維護。重要的是不要濫用它,重復不是為了代碼,而是為了功能。這意味著如果您使用標準代碼來驗證OrderID和SSN,這并不意味著它們是相同的,或者它們將來會保持相同。
通過為兩個不同的功能或事物使用標準代碼,您可以將它們永遠緊密地結合在一起,并且當您的 OrderId 更改其格式時,您的 SSN 驗證代碼將中斷。
軟件領域只有一件事是不變的,那就是“改變”,所以封裝你期望或懷疑在未來改變的代碼。這種 OOP 設計原則的好處是易于測試和維護適當的封裝代碼。
如果你是在 Java 中編碼,那么遵循將變量和方法默認設為私有并逐步增加訪問權限的原則,例如從私有到受保護而不是公開。
Java中的一些設計模式使用了封裝,工廠設計模式 是封裝的一個示例,它封裝了對象創建代碼,并為以后引入新產品提供了靈活性,而不會影響現有代碼。
順便說一句,如果您有興趣了解有關 Java 和面向對象編程中的設計模式的更多信息,那么您必須查看此 設計模式庫 課程 Pluralsight。它是關于如何在現實世界中使用它們的設計模式和建議的最佳集合之一。
類、方法或函數應該對擴展開放(新功能),對修改關閉。這是另一個漂亮的 SOLID 設計原則,它可以防止有人更改已經嘗試和測試過的代碼。
理想情況下,如果您只是添加新功能,那么您的代碼應該經過測試,這就是 開放封閉設計原則的目標。順便說一句,開閉原則是 SOLID 首字母縮寫詞中的“O”。
Single Responsibility Principle 是另一個 SOLID 設計原則,在 SOLID 首字母縮寫詞上代表“S”。根據 SRP,更改類的原因不應該超過一個,或者類應該始終處理單一功能。
如果你在 Java 中的一個 Class 中放置多個功能,它會引入 兩個功能之間的耦合 ,即使你更改一個特性,也有可能破壞耦合功能,這需要另一輪測試以避免對生產造成任何意外環境。
不要要求依賴;它將由框架提供給您。這在Spring 框架中已經很好地實現了 ,這種設計原則的美妙之處在于,任何由 DI 框架注入的類都易于使用模擬對象進行測試,并且維護起來更舒適,因為對象創建代碼集中在框架中。并且客戶端代碼沒有亂七八糟。
有多種實現依賴注入的方法,例如使用字節碼檢測,一些 AOP(面向方面??的編程)框架,如 AspectJ,或者使用代理,就像在 Spring 中使用的那樣。
如果可能的話,總是傾向于組合而不是繼承。你們中的一些人可能會爭論這一點,但我發現 Composition 比Inheritance靈活得多。
組合允許通過在運行時設置屬性來改變類在運行時的行為,并且通過使用接口組合一個類,我們使用多態性,它提供了隨時替換為更好實現的靈活性。
根據Liskov 替換原則,子類型必須可替換父類型,即使用超類類型的方法或函數必須能夠與子類的對象毫無問題地工作” 。LSP 與單一職責原則和接口隔離原則
密切相關. 如果一個類有更多的功能,那么子類可能不支持某些功能并且確實違反了 LSP。
接口隔離原則指出,如果客戶端不使用接口,則不應實現該接口。這主要發生在一個接口包含多個功能時,而客戶端只需要一個功能而不需要其他功能。
界面設計是一項棘手的工作,因為一旦發布了界面,就無法在不破壞所有實現的情況下對其進行更改。
Java中這種設計原則的另一個好處是,接口的缺點是在任何類可以使用它之前實現所有方法,因此具有單一功能意味著實現的方法更少。
始終為接口而不是應用程序編程;這將導致靈活的代碼可以與接口的任何新實現一起使用。
因此,在Java變量、方法的返回類型或方法的參數類型使用接口類型。
不要自己做所有事情,將其委托給相應的班級。委托設計原則的經典示例是Java 中的 equals() 和 hashCode() 方法。為了比較兩個對象是否相等,我們要求類本身進行比較,而不是讓Client類進行檢查。
這種設計原則的主要好處是沒有重復代碼并且很容易修改行為。事件委托是這個原則的另一個例子,其中一個事件被委托給處理程序進行處理。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習