实现状态模式示例,添加任务、状态及具体状态类,增强代码可读性

This commit is contained in:
2026-01-07 10:03:18 +08:00
parent 5ddda4ee95
commit 5fbbada4b7
3 changed files with 167 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
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("=========== 状态模式结束 ===========")
}