1. 模式结构(简单状态模式)
2. 角色
(1) Context(环境类)
拥有状态的类
调用具体状态的方法
(2) State(抽象状态类)
定义一个状态的相关特定行为
不同子类的具体行为实现不一样
(3) ConcreteState(具体状态类)
每一个子类实现特定的相关实现
3. 简单状态模式
状态之间无须进行状态转换
遵循“开闭原则”
4. 可切换状态的状态模式
可以在状态类中聚合Context,即Context与State双向关联
当每次调用具体状态类的方法时检查是否需要改变Context中的State
增加新的状态需要修改源代码
5. 共享状态模式
聚合所有状态作为Context的静态变量,再用一个静态变量标识为当前状态
6. 应用
OA办公系统中的批文状态
RPG游戏角色状态