Java的23種設計模式是軟件開發中常用的設計思想總結,根據用途可分為三大類:創建型、結構型和行為型。
一、創建型模式(5種) 用于處理對象創建機制,隱藏創建邏輯,使程序更靈活。
- 單例模式:保證一個類僅有一個實例,并提供全局訪問點(如日志工具類)。?
-
- 工廠方法模式:定義創建對象的接口,讓子類決定實例化哪個類(如不同數據庫連接的創建)。
- ?- 抽象工廠模式:提供一個接口,用于創建相關或依賴對象的家族,無需指定具體類(如跨平臺UI組件庫)。
- ?- 建造者模式:將復雜對象的構建與表示分離,使同樣的構建過程可創建不同表示(如分步構建文檔)。?
-
- 原型模式:通過復制現有對象來創建新對象,提高創建效率(如大量相似對象的生成)。
- 二、結構型模式(7種) 用于處理類或對象的組合,實現更靈活的結構。
-
- 適配器模式:將一個類的接口轉換成客戶期望的另一個接口,解決兼容性問題(如舊系統接口適配新系統)。
- ?- 裝飾器模式:動態給對象添加額外職責,不改變其結構(如給文本編輯器增加拼寫檢查功能)。?
-
- 代理模式:為其他對象提供代理以控制訪問(如遠程服務代理、權限代理)。
- ?- 外觀模式:提供一個統一接口,簡化子系統的復雜交互(如電腦啟動時統一調用CPU、內存等組件)。
- ?- 橋接模式:將抽象與實現分離,使兩者可獨立變化(如跨平臺的圖形繪制,抽象形狀與具體繪制方式分離)。
- ?- 組合模式:將對象組合成樹形結構,統一處理單個對象和組合對象(如文件系統的文件與文件夾)。
- ?- 享元模式:共享細粒度對象,減少內存消耗(如文字處理軟件中的字符緩存)。
- 三、行為型模式(11種) 用于描述對象間的交互和職責分配。
-
- 策略模式:定義算法家族,讓它們可互相替換,獨立于使用它們的客戶(如不同的排序算法選擇)。
- ?- 模板方法模式:定義算法骨架,將步驟延遲到子類實現(如框架中的初始化流程)。?
-
- 觀察者模式:對象間一對多依賴,當一個對象變化時,所有依賴者收到通知(如訂閱-發布系統)。?
-
- 迭代器模式:提供遍歷聚合對象元素的方法,不暴露內部結構(如集合類的迭代器)。
- ?- 責任鏈模式:將請求傳遞給多個處理器,直到被處理(如日志級別過濾、審批流程)。?
-
- 命令模式:將請求封裝為對象,支持參數化、隊列化請求(如遙控器按鈕控制家電)。
- ?- 備忘錄模式:捕獲對象狀態并保存,以便后續恢復(如游戲存檔功能)。?
-
- 狀態模式:允許對象在內部狀態改變時改變行為,類似狀態機(如訂單的不同狀態切換)。?
-
- 訪問者模式:分離算法與數據結構,在不修改數據結構的情況下增加新操作(如報表生成對不同數據的處理)。
- ?- 中介者模式:用一個中介對象協調多個對象的交互,減少直接依賴(如聊天室的消息轉發)。?
-
- 解釋器模式:定義語言的語法規則并解析(如簡單的表達式解析器)。
- 這些模式并非強制規范,而是解決特定問題的經驗總結,實際開發中需根據場景靈活選用。