https://blog.csdn.net/hguisu/article/details/7557252
定义
允许对象在内部状态改变时改变他的行为,对象看起来好像修改了他的类
角色组成
context 类,拥有一些内部状态,得有个变量说明当前状态
State 接口,定义了一个所有具体状态的接口
ConcreteStateN state的实现类,可以有很多个不同状态类,最好存有context引用
优缺点
- 状态和事物类很好的解耦,不必为一大堆的状态编写一堆if或switch,这些语句很难维护
- 每个状态遵守了“对修改关闭,对扩展开放”原则
- 多出很多的类,但相比把上面所列举带来益处,绝对值得