在軟體開發中,有限狀態機(Finite State Machine, FSM) 是處理狀態之間有明確規則的轉換時非常常用的設計。例如,會員從「入會」可以轉為「暫停」或「退會」,「退會」又可以重新「入會」等。若直接用 if-else 判斷,不僅難以維護,日後擴充更易出錯。本文將介紹如何利用 C# 的 Enum 搭配 Dictionary,簡潔又彈性地實作狀態轉換邏輯。
實作練習
1.用 Enum 定義所有狀態
1 | public enum MemberStatus |
2.用 Dictionary 定義合法狀態轉換
1 | public static class MemberStatusExtensions |
3.使用
1 | var current = MemberStatus.入會; |
結論
這種設計方式具有以下優點:
- 可讀性高:狀態與轉換規則集中管理,一目瞭然。
- 易於擴充:日後如需新增狀態,只需修改 Enum 與 Dictionary 即可。
- 易於維護:轉換規則變更時,不需翻找大量 if-else,只需調整字典內容。