oop - 哪种设计模式最适合用于控制一系列步骤?

标签 oop design-patterns serial-port

我有一个使用串行端口与硬件接口(interface)的 winform 工具。

串行端口用于向硬件发送命令,硬件将确认命令并有时返回数据。

为了完成一项任务,需要以定义的顺序将几个命令发送到硬件。

我已经使用 switch 语句成功实现了该工具来控制命令的发送。然而,虽然这可行,但我不禁想到有更好、更面向对象的方式来做这件事——有吗?

当前的实现如下:

每个案例都是一个需要发送到硬件的命令。
发送方法传递一个要调用的方法和下一步的 ID - 如果命令发送成功,将返回该 ID。

  • 工具将向硬件发送启动 session 命令。
  • 硬件确认命令。
  • 工具向硬件发送设置方向命令。
  • 硬件将确认命令。

  • 等等
    MessageID nextStep = MessageID.IMS;
    
    while (nextStep != MessageID.Stop)
    {
        switch (nextStep)
        {
            case MessageID.ISS:
                nextStep = Send( new ISS_StartSession(), MessageID.IE386);
                RaiseProgressEvent(10); //percentage complete
                break;
    
            case MessageID.IE386:
                nextStep = Send( new IE386_SetDirection(Direction.BOTH), MessageID.IE378);
                RaiseProgressEvent(20);
                break;
    
           //etc
    
           case MessageID.Error:
                HandleError(); //abort task if necessary
                break;
        }
     }
    

    有一个更好的方法吗..?

    我应该看看一个众所周知的设计模式吗?

    最佳答案

    看起来像一个状态机。网上有很多关于他们的资源。看一看。

    http://en.wikipedia.org/wiki/Abstract_state_machines

    关于oop - 哪种设计模式最适合用于控制一系列步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748106/

    相关文章:

    java - 如何在Java中运行预定的函数?

    javascript - 如何动态实例化类

    php - 当我的抽象类实现接口(interface)时,我应该创建抽象方法吗?

    language-agnostic - 流畅的界面是否违反了德米特定律?

    linux - 由虚拟零调制解调器连接的两个真实串行端口(在 linux 或 windows 中)

    python - pyserial 中 Serial.available() 的等价物是什么?

    javax.comm 以及如何修复 java.lang.NoClassDefFoundError

    java - 为什么我们在这个类方法中使用同步块(synchronized block)?

    java - Java 8 中的功能类级别参数

    multithreading - 并发消息处理设计争议