我正在编写一个Windows窗体应用程序,它读取文件,处理它然后提交更改。
根据某些情况,当我从表单中单击“处理按钮”时,我希望它与特定对象进行交互,例如,根据文件的扩展名,文件由处理该文件的特定类处理文件类型。
在应用程序架构方面,最好的方法是什么?
答案 0 :(得分:2)
例如,.txt文件由TextParser处理,.csv文件由CSVParser处理,.doc文件由MSWordParser处理,其他所有文件由GenericParser处理,等等。 >
嗯,首先要创建一个接口,即IParser,以便每个类都有一个.Parse(文件)方法。
接下来是将文件扩展名字符串与类匹配的任务。我想到的第一件事是字典。密钥将是文件扩展名作为字符串,值将是该类型文件扩展名的解析器。在进行任何处理之前,您将使用您希望支持的所有文件扩展名填充字典。
有一些假设可以很好地运作: - 您没有大量受支持的文件扩展名。 - 可以重复使用解析器的一个实例 - 更新解析器并不是特别昂贵;除了语言需要对新对象执行的操作之外,初始化最少。
答案 1 :(得分:0)
我会选择类似工厂模式的东西。
public interface IFileParser
{
void perse(string fileToParse);
}
public static class FileParserFactory
{
public static IFileParser GetParser(string fileToParse)
{
FileInfo file = new FileInfo(fileToParse);
IFileParser parserToReturn = null;
switch (file.Extension.ToLower())
{
case "csv": parserToReturn = new CSVFileParser(fileToParse);
break;
case "txt": parserToReturn = new TextFileParser(fileToParse);
break;
}
return parserToReturn;
}
}