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

Java 設計模式學習心得與核心原則解析

     編輯:Java 相關知識

設計模式的核心精神貫穿一個根本原則:面向介面編程,而非面向實現。這意味著在物件導向開發中,我們應依賴抽象(介面)而非具體類別,以降低模組間的耦合度,提升系統的靈活性與可維護性。

一、創建型模式

1. 工廠方法與抽象工廠

工廠模式的使用頻率堪比 new 關鍵字。它將物件的實例化邏輯封裝於工廠類中,客戶端無需知曉具體類別名稱,即可透過統一介面獲取所需物件,實現了解耦。

2. 原型模式

透過原型實例指定創建物件的種類,並通過拷貝這些原型來創建新物件。適用於初始化成本高、且新物件與原型差異較小的場景。

3. 建造者模式

以組裝汽車為例:車輪、方向盤、引擎等零件構造複雜,組裝過程亦非易事。建造者模式將「構造零件」與「組裝流程」分離,使相同的構建過程能創建不同表示的產品。

4. 單例模式

確保一個類別在全域僅有一個實例,並提供一個全域存取點。常用於資源共享(如連線池、配置管理器)的場景。

二、結構型模式

1. 外觀模式

為子系統提供一個統一的高層介面,降低客戶端與子系統的耦合。例如在 JDBC 程式設計中,Facade 可屏蔽不同資料庫的差異,提供靈活的存取方式。

2. 代理模式

為其他物件提供一個代理以控制對其的存取。以 Jive 為例,剖析了代理模式在使用者層級授權機制中的應用。

3. 適配器模式

將一個類別的介面轉換為客戶端期望的另一個介面。類別複用的兩種方式——組合與繼承——在此均有體現。

4. 組合模式

將物件組合成樹狀結構以表示「部分-整體」層次。客戶端對單個物件與組合物件的操作保持一致,如同個體與集團的關係。

5. 裝飾者模式

動態地給物件添加額外職責,如同油漆工為牆面增色,在不改變原有結構的前提下擴展功能。

6. 橋接模式

將抽象與實現分離(如牛郎織女),使它們可以獨立變化,再透過一座橋樑(介面)動態結合。

7. 享元模式

運用共享技術有效支援大量細粒度物件的復用,降低記憶體開銷,提升 Java 執行效能。

三、行為型模式

1. 模板方法模式

定義演算法骨架,將某些步驟延遲到子類別實現。深刻闡述了為何使用 Java 抽象類,原理簡單卻應用極廣。

2. 備忘錄模式

在不破壞封裝性的前提下,捕獲並外部化物件的內部狀態,以便日後恢復。本質上是在記憶體中保留資料拷貝。

3. 觀察者模式

定義物件間一對多的依賴關係,當主題狀態改變時,所有觀察者均會收到通知。介紹了如何使用 Java API 內建的 Observer 機制。

4. 責任鏈模式

將處理請求的物件串成一條鏈,請求沿鏈傳遞直到有物件處理它。猶如擊鼓傳花,若當前節點能處理則不再傳遞。

5. 命令模式

將請求封裝為物件,從而使您可用不同的請求對客戶端進行參數化,支援佇列、日誌、撤銷等操作。是「行為封裝」的典範。

6. 狀態模式

允許物件在內部狀態改變時改變其行為。將狀態物件化,設立狀態轉換器,使狀態切換輕鬆自然。

7. 策略模式

定義一系列演算法,分別封裝並使它們可互換。客戶端可根據需求靈活選擇所需演算法。

8. 中介者模式

用一個中介物件封裝一系列物件間的交互。如同十字路口的紅綠燈,各車輛(同事物件)只需與紅綠燈(中介者)互動,無需直接耦合。

9. 解釋器模式

給定一門語言,定義其文法的表示,並定義一個解釋器。主要用於語言分析,實際應用機會相對較少。

10. 訪問者模式

表示一個作用於某物件結構中各元素的操作。訪問者在訪問時完成實質操作,且易於擴展新操作而不修改元素類別。

11. 迭代器模式

提供一種方法順序存取聚合物件中的各元素,而無需暴露其內部表示。在 Java 中已內建於 Collection 框架,使用頻率極高,開發者無需自行實作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved