在相同输入情况下不同状态有不同行为。事件,函数调用等都可以认为是输入。

一个简易状态机,包含一个最简状态和两个输入事件,两组迁变状态。
这是一个各种形形色色的状态机化简后的最终形态。

s := false // 状态

func foo() {
    if s {
        // 当前状态,在foo事件的处理逻辑
        // 离开true状态
        // 进入false状态
        s = false
    } else {
        // 当前状态,在foo事件的处理逻辑
        // 离开false状态
        // 进入true状态
        s = true
    }
}

func fee() {
    if s {
        // 当前状态,在fee事件的处理逻辑
        // 离开true状态
        // 进入false状态
        s = false
    } else {
        // 当前状态,在fee事件的处理逻辑
        // 离开false状态
        // 进入true状态
        s = true
    }
}

标签: none

添加新评论