1. 程式人生 > >Java設計模式——(一):六大設計原則

Java設計模式——(一):六大設計原則

  1. 單一職責原則
  2. 里氏替換原則
  3. 依賴倒置原則
  4. 介面隔離原則
  5. 迪米特法則
  6. 開閉原則

注:準備系統學習一下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 面向切面程式設計
在這裡插入圖片描述