所以,想象一下意大利面条代码。任务应该从1到2再到3,等等。如果任务中断,则中止程序。我可以用程序的方式写这个,但想知道是否有一个设计模式。
我看了责任链,但它不合适。我已经知道哪个进程应该处理每个任务。 Master / Worker也不合适,因为它需要逐步处理。
手头的具体问题是 - 允许用户上传Excel文件,将文件与数据库表结构进行比较,然后更新数据库。
步骤将是:
有没有办法为此使用设计模式?感谢。
答案 0 :(得分:1)
有一种设计模式可以解决这种情况,并且众所周知:Pipeline或MSDN称之为Pipes and Filters Pattern。请注意,它不是着名的Gang of Four design patterns的一部分,它甚至可以是架构模式。
主要用于通过较小的独立阶段(或过滤器)执行大量数据处理时:
此模式用于数据流经a的算法 任务或阶段的顺序。
时使用PipelineProcessing模式: 问题包括 执行一系列计算,每个计算都可以被打破 在一系列输入上分成不同的阶段,这样每个阶段 输入计算必须按顺序完成,但有可能 不同输入的不同阶段的重叠计算为 在动机部分的数字中指出。
MSDN:
在:
时使用此模式
- 应用程序所需的处理可以很容易地分解为一组独立的独立步骤。
- 应用程序执行的处理步骤具有不同的可伸缩性要求。
通过使用此模式,您可以通过较小的独立(因此更易于管理)步骤执行您的过程,可以并行化其中一些步骤,从而获得更好的性能,甚至可以使用每个步骤(过滤器)的不同实现,并使用事物轻松定制它们比如每个步骤的失败策略或验证。
答案 1 :(得分:0)
设计模式是运作良好的模式,但不一定是直观开发的。我认为这个问题属于直观的发展。
以下是我将如何攻击它......
在伪代码中
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;
}