? 1. 單例模式(Singleton)
- 定義:確保類只有一個實例,并提供全局訪問點。
- 優點:節省資源、控制訪問。
- 場景:數據庫連接池、日志管理器、配置中心。
- 代碼要點:
- 構造方法私有
- 靜態變量保存唯一實例
- 公共靜態方法
getInstance()
獲取實例
? 2. 工廠模式(Factory)
- 定義:將對象創建邏輯封裝,客戶端通過工廠獲取對象。
- 分類:簡單工廠、工廠方法、抽象工廠。
- 優點:解耦、擴展性強。
- 場景:對象創建復雜、需解耦創建與使用。
- 代碼要點:
- 產品接口 + 具體產品類
- 工廠類根據參數返回不同產品實例
? 3. 觀察者模式(Observer)
- 定義:一對多依賴關系,主題狀態變化自動通知所有觀察者。
- 優點:松耦合、廣播通信。
- 場景:事件系統、消息推送、發布訂閱模型。
- 代碼要點:
Subject
管理觀察者列表Observer
接口定義更新方法- 狀態變化時調用
notifyObservers()
? 4. 策略模式(Strategy)
- 定義:封裝一系列算法,使它們可互相替換。
- 優點:避免 if-else、提高擴展性。
- 場景:排序策略、支付方式、資源調度。
- 代碼要點:
- 策略接口定義算法行為
- 上下文類持有策略對象
- 運行時動態切換策略
? 5. 適配器模式(Adapter)
- 定義:將一個接口轉換為另一個接口,使不兼容類協同工作。
- 優點:復用舊代碼、符合開閉原則。
- 場景:集成第三方庫、接口不兼容。
- 代碼要點:
- 目標接口 + 被適配類
- 適配器類實現目標接口并持有被適配對象
? 6. 裝飾器模式(Decorator)
- 定義:動態地為對象添加額外功能,不改變原結構。
- 優點:比繼承更靈活、支持組合擴展。
- 場景:日志包裝、緩存包裝、權限控制。
- 代碼要點:
- 組件接口 + 具體組件
- 裝飾器抽象類持有組件對象
- 具體裝飾器擴展功能
? 7. 代理模式(Proxy)
- 定義:為其他對象提供代理以控制訪問。
- 優點:延遲加載、權限控制、日志記錄。
- 場景:權限校驗、遠程調用、緩存代理。
- 代碼要點:
- 接口定義行為
- 真實類實現接口
- 代理類實現接口并控制對真實對象的訪問
? 8. 外觀模式(Facade)
- 定義:為復雜子系統提供統一的高層接口。
- 優點:簡化客戶端調用、降低耦合。
- 場景:封裝復雜API、整合多個服務調用。
- 代碼要點:
- 多個子系統類
- 外觀類封裝子系統調用流程
- 客戶端只與外觀類交互
? 9. 模板方法模式(Template Method)
- 定義:定義算法骨架,將具體步驟延遲到子類實現。
- 優點:復用流程、擴展靈活。
- 場景:支付流程、GUI事件處理、產品組裝線。
- 代碼要點:
- 抽象類定義模板方法(final)
- 子類實現可變步驟
- 鉤子方法可選覆蓋
🔍 總結速查表
模式名稱 | 關鍵詞 | 典型場景 |
---|---|---|
單例 | 唯一實例 | 配置中心、日志器 |
工廠 | 對象創建解耦 | 創建復雜對象、依賴注入 |
觀察者 | 一對多通知 | 消息推送、事件系統 |
策略 | 動態切換算法 | 排序、支付、調度 |
適配器 | 接口轉換 | 第三方庫集成 |
裝飾器 | 動態增強功能 | 日志、緩存、權限包裝 |
代理 | 控制訪問 | 權限代理、延遲加載 |
外觀 | 簡化復雜接口 | 封裝子系統、統一API入口 |
模板方法 | 流程復用 | 支付流程、GUI事件、組裝線 |