iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
1

本文同步更新於blog

State Pattern

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


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

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


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

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


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

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

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

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

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


上一篇
Day23. 範例:自助餐餐廳 (外觀模式)
下一篇
Day25. 範例:會員制(狀態模式)
系列文
你終究都要學設計模式的,那為什麼不一開始就學呢?57
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言