J2EE 提供基礎服務標準,但無法保證應用品質。設計模式彌補框架不足,標準化結構層,封裝獨立於業務的技術複雜度,建立業務邏輯與底層架構的弱連接。
針對 J2EE 技術使用中常見問題:如 Front Controller 將 Servlet 開發轉為 GUI 開發。解決 J2EE 專案最可能遇到的問題,但特殊問題可能無對應模式。
三大理由說明其重要性:
| 模式 | 核心意圖 |
|---|---|
| Factory Method | 根據數據生成一組共同父類的實例 |
| Abstract Factory | 定義介面創建相關對象族,不指定具體類 |
| Builder | 分步構建複雜對象,分離構建與表現 |
| Prototype | 透過複製現有實例創建新實例 |
| Singleton | 確保類僅有一實例,提供全局訪問點 |
| 模式 | 核心意圖 |
|---|---|
| Adapter | 將一介面轉換為客戶期望的另一介面 |
| Bridge | 抽離抽象與實現,使兩者可獨立變化 |
| Composite | 樹形結構組合對象,統一單個與組合介面 |
| Proxy | 代理控制對真實對象的訪問,延遲載入 |
| Decorator | 動態添加職責,靈活擴展功能 |
| Flyweight | 共享細粒度對象,大幅節省記憶體 |
| Facade | 為複雜子系統提供統一簡潔介面 |
| 模式 | 核心意圖 |
|---|---|
| Observer | 狀態變更自動通知多個觀察者 |
| Mediator | 中介者封裝對象間交互,降低耦合 |
| Memento | 不破壞封裝前提下保存/恢復內部狀態 |
| Chain of Responsibility | 請求傳遞鏈,特定對象處理 |
| Command | 封裝請求為對象,支援撤銷/佇列 |
| Template Method | 定義算法骨架,子類實現細節 |
| Strategy | 定義算法族,封裝並可互換 |
| Visitor | 分離操作與對象結構,新增操作不修改類 |
| State | 狀態變更改變對象行為 |
| Iterator | 統一介面遍歷聚合對象,隱藏內部結構 |