Java設計模式——(一):六大設計原則
阿新 • • 發佈:2018-11-28
- 單一職責原則
- 里氏替換原則
- 依賴倒置原則
- 介面隔離原則
- 迪米特法則
- 開閉原則
注:準備系統學習一下Java的23種開發模式,由於Java的開發模式是根據六大設計原則設計的,所以有必要認真學一下Java的六大設計原則(圖片來源於網路,侵刪)
單一職責原則(Single Responsibility Principle):
定義:不要存在多於一個導致類變更的原因。通俗的說,即一個類只負責一項職責,應該僅有一個引起它變化的原因。
任務物件不應該承擔太多的職責,保證程式碼的高內聚和單一性。
優點:
1 降低類的複雜度,簡化程式碼
2 提高程式碼的可讀性,同時提高程式碼的可維護性和可複用性
3 在對程式碼進行修改時,可以有效地降低風險,避免對其他功能進行過多的影響
舉例:
在J2EE軟體架構中的MVC模式,將系統分為Model(模型層)、View(視圖表現層)、Controller(邏輯處理層),每一層都只有一個主要功能,專注的去處理擅長的事情
里氏替換原則(Liskov Substitution Principle):
定義:如果對每一個型別為 T1的物件 o1,都有型別為 T2 的物件o2,使得以 T1定義的所有程式 P 在所有的物件 o1 都代換成 o2 時,程式 P 的行為沒有發生變化,那麼型別 T2 是型別 T1 的子型別。
總結:子類可以擴充套件父類的功能,但不能改變父類原有的功能
理解:里氏替換原則主要是告訴我們如何正確的去使用繼承
依賴倒置原則(Dependence Inversion Principle):
定義:
高層模組不應該依賴底層模型,兩者都依賴其抽象
抽象不依賴細節
細節應該依賴抽象
理解:
希望我們去面向介面程式設計
模組與模組之間依賴於介面而不依賴於實現類(模組—介面——模組)
介面不依賴於實現類,介面應該依賴於介面(介面——介面)
同時實現類應該去依賴於介面。(實現類——介面——實現類)
舉例:spring framwork中,關於模組的設計符合依賴倒置原則,各個層級之間用介面連線
介面隔離原則(InterfaceSegregation Principles):
定義:客戶端不應該依賴它不需要的介面,類之間的依賴關係應該建立在最小的介面上
理解:在設計介面的時候,應當細化介面,建立單一功能的介面,不要將介面設計的龐大臃腫,對於一個比較大的功能模組,可以考慮去設計多個介面。維持系統的靈活性和可維護性,隔離可以說是功能上的隔離
迪米特法則( Low of Demeter 最少只是原則)
定義:一個物件應當對其他物件儘可能的少的瞭解
個人理解:在進行類的設計時,邏輯儘量封裝在類的內部,對外提供public的呼叫方法,對內的一些屬性和方法私有化,防止資訊洩漏,降低類與類之間的影響。低耦合,高內聚
開閉原則(Open Close Principle)
定義:一個軟體實體,如類、模組和函式應該對擴充套件開放,對修改關閉
理解:當一個模組的主要功能已經開發完後,新的需求又來了,這個時候最好是擴充套件一些程式碼去實現這個需求,而不是說大刀闊斧的改之前的程式碼,儘量將對系統的修改做到最小,這樣做有很多好處,降低了程式碼的耦合度,同時也就是提高了程式碼的可重用性和可維護性。使我們的程式碼更加靈活,避免冗餘,提高可讀性
舉例:Spring AOP 面向切面程式設計