一、说明
状态模式是一种行为设计模式,用于解决对象在不同状态下具有不同行为
(一) 解决问题
在对象行为根据对象状态而改变时,规避使用大量的条件语句来判断对象的状态,提高系统可维护性
(二) 使用场景
- 当对象的行为取决于其状态,并且该状态可以在运行时动态改变时
- 当有大量的条件语句用于控制对象的行为,并且这些条件在不同的状态下具有不同的表现时
二、结构
- 上下文(Context)保存了对于一个具体状态对象的引用,并会将所有与该状态相关的工作委派给它。上下文通过状态接口与状态对象交互,且会提供一个设置器用于传递新的状态对象。
- 状态(State)接口会声明特定于状态的方法。这些方法应能被其他所有具体状态所理解,因为你不希望某些状态所拥有的方法永远不会被调用。
- 具体状态(ConcreteStates)