我从数据库查询的数据看起来很像以下
Job Site File List
-------------------------------
1 SiteA file2.txt 2
2 SiteB file2.txt 2
3 SiteA file23.txt 23
4 SiteC file2.txt 2
5 SiteB file12.txt 12
6 SiteA file29.txt 29
7 SiteB file28.txt 28
我应该为每个站点(站点A,B和C)启动实例,然后进行处理,例如,对于siteA,处理file2.txt,file23.txt& file29.txt。这种“处理”可以按某种顺序发生,但必须一个接一个(不是同时发生)。
所以我的第一个任务是整理网站 - 并为每个网站创建实例。我该怎么做?
PS:我认为处理部分我应该使用某种迭代器模式......我更喜欢任何现代编译器语言的解决方案......比如c#,vb,c ++等...答案 0 :(得分:0)
我不确定我是否理解了你想要达到的目标,但我认为你需要做的是:
Site
的不同值File
的所有关联值并处理每个值在使用LINQ的C#中,它将是这样的:
var siteNames=data.Select(d => d.Site).Distinct();
foreach(var siteName in siteNames) {
var site=new Site(siteName); //Or use a factory method, a sites list, etc
var files=data.Where(d => d.Site==site).Select(d => d.File);
foreach(var file in Files) {
site.ProcessFile(file);
}
}
答案 1 :(得分:0)
我会有一个带有哈希表的访问者对象,它遍历每个条目。
每个条目: - 如果哈希表中不存在,则访问者对象将为其实例化一个站点。 - 然后对象将获取文件并进行处理。
这样做的好处是可以一次完成分组和处理。
答案 2 :(得分:0)
我赞同每个网站的工人的想法。
另一个问题 - 申请状态。
当你的应用程序启动它是否关心之前发生的事情?在处理了一些文件时,请考虑应用程序崩溃。大概重新启动应用程序将再次处理文件?这是一个问题吗?