FSM(Finite State Machine):有限状态机(Finite-state machine)是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件,是一种数学模型。
fsm:可以严格且规范的控制流转的状态,让状态不会随意变化。
golang的使用:
package main
import (
"fmt"
"github.com/looplab/fsm"
)
func main() {
fsm := fsm.NewFSM(
"close",
fsm.Events{
// 开 close -> open
{
Name: "open",
Src: []string{"close"},
Dst: "open",
},
// 关 open->close
{
Name: "close",
Src: []string{"open"},
Dst: "close"},
},
// 回调函数
fsm.Callbacks{},
)
fmt.Println("初始状态:", fsm.Current())
// 关
err := fsm.Event("close")
if err != nil {
fmt.Println("已经关闭,无须重复关闭")