狀態
狀態即為特殊立場或滿足一些條件,可以執行指定動作或等待一些事件
如何找尋狀態?
範例:自動販賣機
假設有簡單的一自動販賣機販售兩類商品,一類售價20元,另一類售價50元。如果該販賣機只能辨識10元及50元硬幣。一開始機器處於Hello的狀態,當投入10元時,機器會進入餘額不足的狀態,直到投入的金額大於20元為止。如果一次投入50元,則可以 選擇所有的產品,否則就只能選擇20元的產品。完成選擇後,將會賣出商品並且找回 剩餘的零錢,隨後,機器又將返回初始的狀態。
列出使用者需求的事件
- 投下10元硬幣
- 投下50元硬幣
- 選擇20元商品
- 選擇50元商品
一個事件為兩個狀態的連接
狀態轉換表
Add10 | Add50 | Item20 | Item50 | |
---|---|---|---|---|
Hello | NotEnough | Menu2050 | X | X |
NotEnough | Menu20 | Menu2050 | X | X |
Menu20 | (<50)Menu20/ (≥ 50)Menu2050 | Menu2050 | Hello | X |
Menu2050 | Menu2050 | Menu2050 | Hello | Hello |
狀態機
用來與使用者確認使用案例是否符合使用者需求
程式與狀態機的一致性
降低程式的維護難度,以及提升維護效率,狀態機的更改可立即修改對應的程式碼