我有一个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;
}
}
有更好的方法吗??
我应该看一下众所周知的设计模式吗?
答案 0 :(得分:3)
看起来像状态机。网上有很多关于他们的资源。看看。
答案 1 :(得分:3)
我猜状态是您正在寻找的DP。
答案 2 :(得分:1)
特别是如果您的发送/接收操作是异步的,我建议使用命令模式。 Here我解释了为什么我发现它适合异步操作序列。
答案 3 :(得分:0)
我建议责任链模式,因为步骤可以链接,您可以在客户端级别控制链中的链接。