-
特点:在面向对象编程思想中,万物皆为对象,状态也不例外。状态也可以抽象为类,状态类实例化后就是一个具体的状态对象。
程序中通常都会有很多逻辑判断if ... else ...
,像这样一组逻辑判断几乎都可以抽象为一个状态类,每一个分支为一个状态对象。但实际编程中没必要每次都这样做,只有在相同的一组逻辑判断多次(两次以上)出现在程序当中且每次出现的时候,相同的分支需要不同的算法,就可以使用状态模式进行优化,尤其是每个逻辑分支都很复杂的情况,即分而治之,方便复杂逻辑分支的维护和扩展管理。 - 角色:
角色名称 | 角色职责 |
---|---|
State(状态) | 定义状态相关处理接口 |
ConcreteState(具体状态) | 根据不同状态实现State定义的相关接口 |
Context(状况、前后关系、上下文) | 持有当前状态的State实例,并对State进行管理,如:切换,访问等 |
-
角色关系:
代码示例:State
以上文献参考:《图解设计模式》