通过域名打开网站是做映射么,礼品网站制作,电商网上开店步骤,wordpress评论美化插件一、简介
状态模式一般用来实现状态机#xff0c;而状态机常用在游戏、工作流引擎等系统开发中。不过#xff0c;状态机的实现方式有多种#xff0c;除了状态模式#xff0c;比较常用的还有分支逻辑法和查表法。该模式允许对象内部状态改变使改变它的行为。
二、适用场景…一、简介
状态模式一般用来实现状态机而状态机常用在游戏、工作流引擎等系统开发中。不过状态机的实现方式有多种除了状态模式比较常用的还有分支逻辑法和查表法。该模式允许对象内部状态改变使改变它的行为。
二、适用场景
行为随状态而改变条件、分支语句的替代者
三、UML类图 四、案例
交通信号灯的红黄绿三色的变化。
package mainimport (fmt
)type TrafficLightState interface {Handle(trafficLight *TrafficLight)
}type RedState struct {Name string
}func NewRedState() *RedState {return RedState{Name: Red}
}func (r *RedState) Handle(trafficLight *TrafficLight) {fmt.Println(Red light: Stopped)trafficLight.SetState(NewGreenState())
}type YellowState struct {Name string
}func NewYellowState() *YellowState {return YellowState{Name: Yellow}
}func (y *YellowState) Handle(trafficLight *TrafficLight) {fmt.Println(Yellow light: Be prepared to stop)trafficLight.SetState(NewRedState())
}type GreenState struct {Name string
}func NewGreenState() *GreenState {return GreenState{Name: Green}
}func (g *GreenState) Handle(trafficLight *TrafficLight) {fmt.Println(Green light: Go)trafficLight.SetState(NewYellowState())
}type TrafficLight struct {State TrafficLightState
}func NewTrafficLight() *TrafficLight {return TrafficLight{State: NewRedState()}
}func (t *TrafficLight) SetState(state TrafficLightState) {t.State state
}func (t *TrafficLight) Change() {t.State.Handle(t)
}func main() {trafficLight : NewTrafficLight()for i : 0; i 10; i {trafficLight.Change()}
}