Skip to main content

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儲存與還原物件的狀態(例如復原功能)。