多步算法的设计模式

dis*_*kid 5 .net c# design-patterns

我正在编写一个控制台应用程序,它通过一个包含 N 步的算法。NN+1执行步骤之前正确完成步骤很重要。否则程序应停止工作并显示错误消息。

if当然可以使用嵌套语句来做到这一点并使用try-catch-finally(在 finally 中使用 continue 标志来决定程序是否应该处理)。但我正在寻找一种更好的结构化设计模式或方法来做到这一点。有什么建议吗?

Ces*_*Gon 9

管道设计模式恰恰是这一点:在步骤严格的顺序进行一个复杂的过程。谷歌“管道设计模式”,你会发现很多资源。

是 MSDN 上面向编程的介绍性文章,是一篇更具理论性的文章。


Tim*_*ong 6

责任链

http://www.codeproject.com/Articles/455228/Design-Patterns-3-of-3-Behavioral-Design-Patterns#Chain

或状态模式

http://www.codeproject.com/Articles/455228/Design-Patterns-3-of-3-Behavioral-Design-Patterns#State

可能是您问题的解决方案。

对于责任链模式,当您检测到错误时,您只需将“错误消息(处理)”流程设置为链中的下一个流程。

对于状态模式,需要在遇到错误时将状态更改为“Error”,并处理错误状态下的所有错误。

希望这会有所帮助。


Men*_*gis 3

我曾经创建了一个控制自动化的流程,并使用了包含所有步骤的枚举

enum AutomationStep{Requested, Started, Waiting, Processing, Terminating};
Run Code Online (Sandbox Code Playgroud)

后来我创建了一个 switch/case 来以不同的方式处理每个步骤

switch (currentStep)
{
  case AutomationStep.Requested : InitializeProcess(); currentstep = AutomationStep.Started; break;
  case AutomationStep.Started : StartTheEngines(); currentstep = AutomationStep.Waiting; break;
  case AutomationStep.Waiting : //etc
   break;
   default:
}
Run Code Online (Sandbox Code Playgroud)

您稍后可以使用 While 来运行每个步骤