State模式

地铁十字转门

  • 状态迁移表格.
    • 起始状态 触发迁移的事件 终止状态  要执行的动作.

    • Locked   Coin               UnLocked UnLock
    • UnLocked Pass             Locked     Lock
  • 最直接的方式:switch(state)  case Locked : switch(event) case Pass:
  • State模式
    • State/Strategy模式
      • 都有一个Context,其委托给一个具有几个派生类的多态基类.
      • 不同:State模式中的派生类持有回指向Context的引用.派生类的主要功能时使用这个引用来调用Context中的方法.
      • 所有State模式实例都是Strategy模式实例.反之不成立.
    • State模式的收益
      • 分离了状态机的逻辑(分布在State派生类中)和动作(Context中实现).
      • 缺点:逻辑分散(无法在一处看到整个状态机逻辑);State派生类的难以编写.

posted on 2014-05-15 09:36  RobynHYB  阅读(185)  评论(0编辑  收藏  举报

导航