执行一系列步骤的最佳设计模式

Best Design Pattern to execute a Series of Steps

我有一个应用程序,用户可以使用该应用程序启动(填写表格并单击 运行)一系列步骤。

首先必须执行第1步,然后执行第2步。如果第2步成功,则执行第3步,否则执行第4步。最后必须执行第5步。

每一步大约有 10 到 100 行代码。

为了实现这个逻辑,我应该使用哪种设计模式来构建我的代码?是责任链模式、模板方法模式还是其他什么?

一些方法调用和一个 if-else-statement 应该可以满足您的需求。

Step1();
if (Step2()) {
    Step3();
} else {
    Step4();
}
Step5();

只要让Step2return一个布尔值就可以判断是否成功了。如果步骤2return有一些数据,你也可以returnnull或者如果操作不成功的话一个空集合代替。

public bool Step2()
{
    //do things
    return <whether successful>;
}

这个简单易懂

当然,这些方法可以在不同的服务中实现,以更好地分离关注点。例如

_ui.ShowWaitCursor(); // Step 1.
var data = _fileService.GetData(); // Step 2.
if (data != null) { // Check success of step 2.
    _dbService.WriteData(data); // Step 3.
} else {
    _dbService.WriteDefaults(); // Step 4.
}
_ui.HideWaitCursor(); // Step 5.

另请参阅:Dependency injection (Wikipedia)。如果您正在寻找一种更好的方式来组织您的代码,这值得一看。

  • 如果代码执行中的步骤意味着系统的不同状态,在这些状态下它对传入消息的反应不同,那么这可以使用 State 模式来实现。

  • 如果您拥有或将拥有 类 的层次结构,每个层次结构执行相同的一组步骤,但实现略有不同,则 Template 模式合适

  • 如果只是一个由多个函数调用组成的执行流程,那么请看Olivier的回答。