go-pattern-examples/behavior/10_state/README.md

14 lines
835 B
Markdown
Raw Normal View History

2020-05-05 17:04:16 +03:00
# 状态模式
2020-05-06 11:50:57 +03:00
状态模式的目的就是设计一个状态机,用状态的改变/流转驱动行为变化,同时将状态的实现放在外部,以方便扩展状态。
2020-05-05 17:43:54 +03:00
2020-05-06 11:50:57 +03:00
日常生活的很多情况都在跟状态打交道,比如闹装有,振铃,非振铃状态,商业有营业和关门状态,饭有生,熟,半生不熟三种状态,机器人,游戏角色的拟人状态有:走,跑,跳,充电(休息)等状态。
2020-05-05 17:43:54 +03:00
状态模式的关键角色:
2020-05-06 11:50:57 +03:00
+ Context: 拥有多种状态的上下文对象(struct), 持有状态属性State
+ State: 封装特定状态行为的interface
+ ImplementedState: 具体的状态继承接口State不同的状态执行Context的不同行为。
状态模式常常需要耦合有状态的对象本身的引用,或者相关接口,以获取对象的完整的状态。