go-pattern-examples/behavior/10_state/README.md
2020-05-06 16:50:57 +08:00

14 lines
835 B
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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