最好采用哪种设计模式来控制一系列步骤?

Kil*_*are 6 oop design-patterns serial-port

我有一个winform工具,使用串行端口与硬件连接.

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

要完成任务,需要以定义的顺序将多个命令发送到硬件.

我已使用switch语句成功实现了该工具来控制命令的发送.然而,虽然这有效,但我不禁想到有更好的,更多的OO方式这样做 - 是吗?

目前的实施如下:

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

  • 工具将向硬件发送启动会话命令.
  • 硬件确认命令.
  • 工具向硬件发送设置方向命令.
  • 硬件将确认命令.

等等

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;
    }
 }
Run Code Online (Sandbox Code Playgroud)

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

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

Fra*_*eld 1

特别是如果您的发送/接收操作是异步的,我建议使用命令模式。在这里,我解释了为什么我发现它适合异步操作序列。