package main import "fmt" /* 实例: 一个任务状态机 */ type Task struct { state State } func (t *Task) SetState(state State) { t.state = state } func (t *Task) Handle() { t.state.Handle(t) } // 状态接口 type State interface { Handle(t *Task) } // 具体状态 - 待处理 type PendingState struct{} func (p *PendingState) Handle(t *Task) { fmt.Println("任务待处理,开始处理任务...") t.SetState(&InProgressState{}) } // 具体状态 - 进行中 type InProgressState struct{} func (i *InProgressState) Handle(t *Task) { fmt.Println("任务处理中,完成任务...") t.SetState(&CompletedState{}) } // 具体状态 - 已完成 type CompletedState struct{} func (c *CompletedState) Handle(t *Task) { fmt.Println("任务已完成,无法再处理。") } func main() { fmt.Println("============= 状态模式 =============") task := &Task{state: &PendingState{}} task.Handle() task.Handle() task.Handle() fmt.Println() fmt.Println("=========== 状态模式结束 ===========") }