美文网首页
设计模式-状态机

设计模式-状态机

作者: Wu杰语 | 来源:发表于2020-12-19 17:11 被阅读0次

对于一个状态机来说,需要分成2个部分来考虑状态机,一是状态机本身,二是状态机的实现。

状态机推演

只有状态机本身是正确的,其实现才有意义,如下这篇文章介绍的非常好。https://zhuanlan.zhihu.com/p/59723017?utm_source=zhihu&utm_medium=social&utm_oi=793081648135684096
这篇文章中提出的状态机的四个问题:

  • 图上表达了系统可能收到的所有事件吗?
  • 我们推演了每个节点上可能收到的所有事件的处理吗?
  • 我们有可能陷入某种状态而无法离开吗?
  • 状态机可以化简吗?
    非常值得我们思考。

http://www.processon.com/ 画上状态机,咱们就画

image.png

状态机实现

当我们用UML画出状态图后,就开始写状态机了。

interface Ilight {
  void turn();
}

public StateMachine {
  private Ilight l;
  public void setCurLight(Ilight l) {
      this.l = l;
  }

 public void turn() {
  l.turn; 
}
}


class On implement Ilight {
  private final StateMachine s;
  public On(Statemachine s) {
    this.s = s;
    s.setCurLight(Off);
  }
}

class Off implement Ilight {
  private final StateMachine s;
  public Off(Statemachine s) {
    this.s = s;
    s.setCurLight(On);
  }
}

这个例子就是一个最简单的开关灯的例子,使用的是状态模式,使用状态模式的好处是出了状态和事件,还可以在具体状态处加入action进行处理。

小结

状态模式在日常生活中使用的非常多,网站的登陆状态、电梯等,状态模式首先要认知到实际的状态图,因此要学习如何推演。对于状态机,有状态分支法、查表法、状态模式等几种实现。

相关文章

  • 设计模式❤状态机模式

    状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。通过改变对象内部...

  • Java 有限状态机 (设计模式——状态模式)

    Java 有限状态机 (设计模式——状态模式) 编写代码的时候,有时会遇见较为复杂的swith...case......

  • 状态机设计模式

    初识 我第一次知道状态机,是在大学学习《数字电子技术基础》的时候。一块控制芯片有若干输入数据总线Data_in,一...

  • 设计模式-状态机

    对于一个状态机来说,需要分成2个部分来考虑状态机,一是状态机本身,二是状态机的实现。 状态机推演 只有状态机本身是...

  • 状态模式

    一. 什么是状态模式 状态模式是状态机的一种实现方式. 状态机又叫有限状态机(FSM) 状态模式不常用, 有点像组...

  • 浅析状态机设计模式

    背景 在需求开发的过程中,经常会遇到根据不同的情况作出不同的处理。最直接的就是if...else...。当场景特别...

  • 64 - 状态模式

    状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式...

  • Java设计模式<状态机模式>

    Java设计模式<状态机模式> 意图 允许对象在内部状态发生改变时改变它的行为 解决的问题 对象的行为依赖于它的状...

  • 第二篇:状态机模式

    状态机模式非常简单,实际上任何一个类就是一个状态机模式。class A{ public: void fun(int...

  • 必修:VSF的事件驱动

    设计上,VSF的底层核心是一个参照UML设计的状态机构架。不过,我这里先不准备讲状态机,因为VSF里的状态机构架从...

网友评论

      本文标题:设计模式-状态机

      本文链接:https://www.haomeiwen.com/subject/czmfnktx.html