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派生类的难以编写.

[Agile Software Development(Principles,Patterns,and Pracitices)]

posted @ 2013-12-14 15:49  robynhan  阅读(265)  评论(0编辑  收藏  举报