1.什么是状态模式
状态模式主要解决当一个问题存在很多状态,并且处理操作会随着状态变化而变化,这是就可以使用状态模式,常见的使用状态模式的地方,比如将大量if else 抽象成一个个状态,然后使用状态模式解决。
2.状态模式讲解
- state是状态类,是一个interface,用来承接随着状态变化的子类, 并定义一个与状态相关的处理操作函数
- concreteState是状态子类,它会实现state定义的状态相关的处理操作函数, 每一个状态对应一个状态子类,随着状态的变化,当哪个子类赋给state状态类时,这个state就执行谁的方法
- context类,是concreteState的实例,主要包含成员就是状态和concreteState的实例本身,随着状态的变化,实例的状态就会变化
3.代码示例
- 代码结构图
- 代码示例
type Work struct {
hour int
current State
finish bool
}
func (w *Work) SetState(s State) {