所以,想象意大利面条代码。任务应该从1到2再到3,等等。如果任务中断,则中止程序。我可以用程序方式编写这个,但想知道是否有一个设计模式。
我看了责任链,但它不合适。我已经知道哪个进程应该处理每个任务。 Master / Worker也不合适,因为它需要逐步处理。
手头的具体问题是 - 允许用户上传Excel文件,将文件与数据库表结构进行比较,然后更新数据库。
步骤将是:
有没有办法为此使用设计模式?谢谢。
有一个设计模式来解决这种情况,它是众所周知的:Pipeline或MSDN称之为Pipes and Filters Pattern。请注意,它不是着名的Gang of Four design patterns的一部分,它甚至可以是一种架构模式。
它主要用于通过较小的独立阶段(或过滤器)执行大量数据处理:
此模式用于数据流经一系列任务或阶段的算法。
在以下情况下使用PipelineProcessing模式:问题包括执行一系列计算,每个计算可以在一系列输入上分解为不同的阶段,这样对于每个输入,计算必须按顺序进行,但是有可能如Motivation部分中的图所示,重叠不同输入的不同阶段的计算。
MSDN:
使用此模式时:
- 应用程序所需的处理可以很容易地分解为一组离散的独立步骤。
- 应用程序执行的处理步骤具有不同的可伸缩性要求。
通过使用此模式,您可以通过较小的独立(因此更易于管理)步骤执行您的过程,可以并行化其中一些步骤,从而达到更好的性能,甚至可以使用每个步骤(过滤器)的不同实现,并使用失败策略等方法轻松定制它们或验证每个步骤。
设计模式是运行良好的模式,但不一定是直观开发的。我认为这个问题属于直观的发展。
这是我将如何攻击它...
在伪代码中
bool DoTheWork(file)
{
if (!IsUploaded(file))
return false;
if (!IsExcel(file))
return false;
if (!WriteToDataTable(file))
return false;
.... etc
return true;
}
在嵌套函数中的某些点上可能会出现一些错误,即......
bool WriteToDataTable(file)
{
try
{
// Details to write to your database
}
catch (e)
{
errorLogging(e);
return false;
}
return true;
}