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

时间:2011-01-20 14:09:02

标签: oop design-patterns serial-port

我有一个winform工具,可以使用串口与硬件连接。

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

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

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

目前的实施如下:

每种情况都是需要发送到硬件的命令。 Send方法被传递一个方法来调用和下一步的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;
    }
 }

有更好的方法吗??

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

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

我猜状态是您正在寻找的DP。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我建议责任链模式,因为步骤可以链接,您可以在客户端级别控制链中的链接。