我正在创建Generic parser
,它将解析任何类型的文件并将文件数据转换为对象。
示例:CSV文件包含产品数据将转换为Product对象。
我的方法是:
我有一个类MainParser
,它将获取文件名,然后根据文件类型将其传递给各自的解析器,如CSV,excel,word解析器。
我在这里看的是我想创建一个中间对象,它首先包含数据然后可以将数据解析为相应的对象。中间对象是单个解析器的输出,然后我将该中间对象转换为主解析器中的最终对象,然后将其返回给调用者应用程序。
使用中间对象的好处是所有验证,而将文件数据转换为最终对象将在一个地方。
我可以使用什么样的对象来保存临时数据......这里的最佳做法是什么??
答案 0 :(得分:1)
为什么不尝试像
这样的东西class MainParser {
public MyObject Parse(Filename file){
//Build the relevant parser implementation according to the type of the file
IParser myParser = ParserFactory.BuildParser(file)
//Build the intermediate object
DTOObject intermediateObject = myParser.Parse(file);
//Finish the build
return BuildMyObject(intermediateObject);
}
private MyObject BuildMyObject(DTOObject dtoObject){
//Do validation and so on
}
}
这里的中间对象只是一种Data Transfer Object,你只是暂时将它存储在一个局部变量中,因为在最终对象构建完成后你不需要它。