1、本章的例子——糖果机
糖果机有许多操作、状态,每个状态经过操作后可以转移到另外的状态
![](https://img.haomeiwen.com/i9002551/a7962a0c10234c99.png)
运用状态模式,将状态抽象为类,在运行时,各个状态以对象的方式进行组合
![](https://img.haomeiwen.com/i9002551/ef9dd3f5cec1714f.png)
![](https://img.haomeiwen.com/i9002551/9b4c26049b2ff81f.png)
- 每个状态的行为局部化到它自己的类中
- 将容易产生问题的if语句删除,以方便日后的维护
- 让每一个状态对修改关闭,让糖果机对扩展开放
2、状态模式
允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类
- 使用组合通过简单引用不同的状态对象来造成类改变的假象
- 与策略模式不同的是,状态模式可以在组合的状态间游走,不断变化行为(状态)
- context会将行为委托给状态
![](https://img.haomeiwen.com/i9002551/02abaac8dd8aaf8f.png)
网友评论