Design Patterns 設計模式
Design Pattern(設計模式)是解決軟體設計中常見問題的一套經驗 與範例。它們不是現成的程式碼,而是針對特定情境下問題的最佳實踐。設計模式有很多種,但最經典的是《GoF》(Gang of Four)在書《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的 23 種設計模式。
這些模式可以分為三大類:
🔧 1. 建立型模式(Creational Patterns)
負責物件的建立,讓程式更加靈活、可擴展。
| 模式名稱 | 用途簡述 |
|---|---|
| Singleton | 確保一個類別只有一個實例(全域唯一)。 |
| Factory Method | 定義一個建立物件的介面,讓子類決定要建立哪個類別。 |
| Abstract Factory | 提供一個介面來建立一系列相關或相依的物件。 |
| Builder | 將一個複雜物件的建立與它的表示分離。 |
| Prototype | 使用原型(複製)建立新物件。 |
🔗 2. 結構型模式(Structural Patterns)
關心類別與物件之間的組合,讓它們可以協同工作。
| 模式名稱 | 用途簡述 |
|---|---|
| Adapter | 讓介面不相容的類別可以一起工作(介面轉接器)。 |
| Bridge | 分離抽象與實作,使它們可以獨立變化。 |
| Composite | 將物件組合成樹狀結構,使個別物件與組合物件一致處理。 |
| Decorator | 動態地新增物件功能,而不改變其結構。 |
| Facade | 提供一個簡化統一的介面給複雜系統。 |
| Flyweight | 使用共享物件來減少記憶體用量。 |
| Proxy | 替代真實物件進行控制(例如:延遲加載、安全檢查)。 |
🤝 3. 行為型模式(Behavioral Patterns)
關注物件之間的溝通與責任分配。
| 模式名稱 | 用途簡述 |
|---|---|
| Observer | 當一個物件改變時,通知所有相依物件。 |
| Strategy | 定義一系列演算法,讓它們可以互相替換。 |
| Command | 將請求封裝成物件,讓你可排程、撤銷操作。 |
| State | 讓物件的行為根據狀態改變。 |
| Template Method | 定 義演算法骨架,讓子類決定具體實作。 |
| Iterator | 提供順序存取集合元素的方式,而不暴露內部結構。 |
| Mediator | 用中介者物件封裝物件間的互動,避免物件互相引用。 |
| Chain of Responsibility | 把請求沿著處理鏈傳遞,直到某個物件處理它。 |
| Visitor | 對物件結構中的元素定義新操作。 |
| Interpreter | 解釋語言文法並執行解釋(常用在語法分析器)。 |
| Memento | 儲存與還原物件的狀態(例如復原功能)。 |