首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 設計模式入門筆記:八大設計原則與模式核心思想深度解析

     編輯:Java 綜合教學

為什麼學設計模式?

「每個模式描述一個反覆出現的問題及其解決方案核心,使你能反覆使用該方案而不重復勞動。」—— GOF

軟件隨業務演進持續變更,模式目標:復用代碼、擴展功能、最小化修改現有代碼。

八大設計原則(模式基石)

1. 開閉原則 (OCP) —— 總綱

對擴展開放,對修改關閉。 新增功能通過增加代碼實現,而非修改核心邏輯。抽象化是關鍵(介面/抽象類定義穩定契約)。

2. 單一職責原則 (SRP)

一個類僅有一個引起變化的原因。職責過度耦合會導致修改一處牽一髮動全身。粒度把握:隨項目複雜度遞進細化。

3. 封裝變化原則 (EVP)

找出系統變化點,將其封裝到獨立對象/層中。
兩點要求:
① 同類變化不分散;
② 不同變化不混合。

4. 里氏替換原則 (LSP)

子類型必須能替換父類型且不影響正確性。
含義:
① 子類可實現父類抽象方法,不可覆蓋非抽象方法(破壞契約);
② 子類可新增方法;
③ 重載時參數更寬鬆(逆變);
④ 實現時返回更嚴格(協變)。

5. 依賴倒轉原則 (DIP)

① 高層模塊不依賴低層模塊,雙方依賴抽象。
② 抽象不依賴細節,細節依賴抽象。
③ 面向介面編程:Encryption e = new MD5Encryption(); → 換算法只改實例化處。

6. 介面隔離原則 (ISP)

多個專用介面優於單一臃腫介面。避免實現類被迫依賴不需要的方法(「胖介面」污染)。

7. 合成復用原則 (CARP)

優先組合/聚合,少用繼承。
繼承:強耦合、破壞封裝、靜態編譯期綁定。
組合:弱耦合、運行期動態替換、符合 DIP。

8. 迪米特法則 (LoD) —— 最少知識

只與直接朋友通信。若 A 需調用 C,應通過 B 轉發(A→B→C),降低耦合、控制信息過載。

原則關係圖譜

OCP (目標)
 ↑
DIP (手段:倒轉依賴)
 ↑
LSP (基礎:保證替換安全)
 ↑
ISP / CARP / LoD / SRP / EVP (具體編碼層面的落地準則)

從原則到模式

  • 策略/模板方法 → 封裝變化 (EVP) + 依賴倒轉 (DIP)
  • 工廠/抽象工廠 → 開閉 (OCP) + 單一職責 (SRP)
  • 裝飾器/代理 → 組合復用 (CARP) + 介面隔離 (ISP)
  • 觀察者/中介者 → 迪米特法則 (LoD) 解耦交互
  • 單例 → 控制實例化變化點 (EVP)

學習建議

  1. 先理解原則,再看模式結構,最後實戰重構。
  2. 不為模式而模式:簡單優於複雜,YAGNI 原則。
  3. 閱讀優秀源碼(JDK Collections, Spring, Guava)觀察模式實際應用。
  4. 《大話設計模式》入門 → 《Java與模式》進階 → GOF 原著查漏補缺。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved