我有一个使用串行端口与硬件接口(interface)的 winform 工具。
串行端口用于向硬件发送命令,硬件将确认命令并有时返回数据。
为了完成一项任务,需要以定义的顺序将几个命令发送到硬件。
我已经使用 switch 语句成功实现了该工具来控制命令的发送。然而,虽然这可行,但我不禁想到有更好、更面向对象的方式来做这件事——有吗?
当前的实现如下:
每个案例都是一个需要发送到硬件的命令。
发送方法传递一个要调用的方法和下一步的 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;
}
}
有一个更好的方法吗..?
我应该看看一个众所周知的设计模式吗?
最佳答案
看起来像一个状态机。网上有很多关于他们的资源。看一看。
http://en.wikipedia.org/wiki/Abstract_state_machines
关于oop - 哪种设计模式最适合用于控制一系列步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748106/