State(状态)模式

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

    State.png

  2. 代码示例:State

以上文献参考:《图解设计模式》

你可能感兴趣的:(State(状态)模式)