狀態模式

State Pattern

允許對象在內部狀態改變時,改變它的行為,對象看起來好像修改了它的類。

Example: 會員制


狀態模式會將類別分為兩類:
分別是情境類別 (Context)狀態類別 (State)

當前對象會隨著內部狀態,改變它的行為。


狀態模式涉及了 有限狀態機 (Finite-State Machine) 的概念。

有限個狀態,彼此間因動作而造成狀態轉移的系統,
同一時間內只會表現出一種狀態。


優點:
將狀態類抽離,可讓當前對象複雜的條件判斷簡化。
即消除龐大的條件分支敘述。

缺點:
會製造出許多的小類別。

與其他模式的比較:
[簡單工廠模式]:
簡單工廠模式的物件,創造後行為就不會改變了。
而狀態模式則可能因應其狀態,做出不同的行為。

[策略模式]:
定義算法族,委派給不同的物件。
而狀態模式中的小類別層級,皆可獨立運作。

ʕ •ᴥ•ʔ:狀態模式有點像是簡單工廠模式 + 策略模式的結合應用。