用函数式模拟设计模式-状态模式

236 阅读1分钟

五. 状态模式

1. 定义函数

type State func(int) State

2. 定义几种状态

var startState = func() State {
	fmt.Println("start")
	return func(i int) State {
		if i == 0 {
			return pauseState()
		} else {
			return stopState()
		}
	}
}
var pauseState = func() State {
	fmt.Println("pause")
	return func(i int) State {
		return stopState()
	}
}
var stopState = func() State {
	fmt.Println("end")
	return nil
}

3. 使用

state := startState()
state = state(1)