JAVA設計模式大總結系列博客(一)設計模式的原則


創建軟件應用程序是爲了滿足不斷變化和發展的需求。一個成功的應用程序還應該提供一種簡單的方法來擴展它以滿足不斷變化的期望。有一些問題已經被開發人員所發現並總結了解決方案。如果在設計和開發軟件時應用一組面向對象的設計原則和模式,則可以避免或解決這些常見問題。

單一職責原則

單一職責原則是一種面向對象的設計原則,該原則指出軟件模塊應該只有一個被修改的理由。在大多數情況下,編寫Java代碼時都會將單一職責原則應用於類。
簡單的說就是一個方法只解決一個問題,一個累只幹相同的事情。不能說我這個方法是計算物體面積的然後我返回它的價格。同樣一個貓的類Cat,裏面不會產生“汪汪叫”的方法,因爲不符合邏輯。這樣的好處是,修改代碼的時候,我只需要針對不同的方法進行修改,不用去動別的邏輯,而且我這樣修改後還不影響整體的性能。單一職責的原則的好處就在於此。

開閉原則

含義:“模塊、類和函數應該對擴展開放,對修改關閉。”
也即是說,一旦我們完成了代碼的一部分,不應該再修改它,而是應該在它的基礎之上繼續建設。
不僅要測試正在改變的功能,還要測試它負責的整個功能。這其實就是說,我們在開發一個方法類的時候,對之前已經開發好的功能,不要修改。在已經開發好的基礎上進行拓展。所謂的開指的就是拓展,所謂的閉就是已經開發好的代碼。

里氏替換原則

Barbara Liskov指出,派生類型必須完全可替代其基類型。里氏替換原則(LSP)與子類型多態密切相關。基於面嚮對象語言中的子類型多態,派生對象可以用其父類型替換。例如,如果有一個Car對象,它可以在代碼中用作Vehicle。里氏替換原則聲明,在設計模塊和類時,必須確保派生類型從行爲的角度來看是可替代的。當派生類型被其父類型替換時,其餘代碼就像它是子類型那樣使用它。從這個角度來看,派生類型應該像其父類型那樣表現,不應該破壞它的行爲。這稱爲強行爲子類型。(理解起來有點難度,好像沒有什麼鳥用)

接口隔離原則

“客戶端不應該依賴於它所不需要的接口。”實際應用中,接口隔離原則(Interface Segregation Principle,ISP)減少了代碼耦合,使軟件更健壯,更易於維護和擴展。接口隔離原則最初是由Robert Martin提出的,他意識到如果接口隔離原則被破壞,客戶端被迫依賴它們不使用的接口時,代碼就會變得緊密耦合,幾乎不可能爲其添加新功能。(同樣不好理解,意思是我繼承的接口要根據我實際的需要來,不要搞一大堆我不需要的方法)

依賴倒置原則

爲了理解這個原理,我們必須解釋耦合和解耦的重要概念。耦合是指軟件系統的模塊彼此依賴的程度。依賴度越低,維護和擴展系統就越容易。有不同的方法來解耦系統的組件。其中一個辦法是將高級邏輯與低級模塊分開,如圖1-16所示。這樣做時,可以嘗試讓它們都依賴於抽象進而減少二者之間的依賴關係。如此就可以替換或擴展其中任何一個模塊而不影響其他模塊。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章